2016-08-23 6 views
0

SQL文で空の行を避ける方法はありますか? 私の出力は次のようになります。SQLが空の行を避ける

a | b | c 
1  2  3 
4 
EMPTY EMPTY EMPTY 
5 

しかし、私はしたい:値が空である

a | b | c 
1 2 3 
4 
5 
+2

'<>「EMPTY」&& b <> 'EMPTY' && c <> 'EMPTY'?何か? –

+1

これはテキストが空かヌルですか?もしnullが 'どこがnullではなく、bはnullでなくcはnullではない 'と言うが、確かに我々はサンプルデータと期待される結果と現在のクエリを見る必要がある。現在のクエリで何か間違っているnulls /空のdoを排除するために離れているかもしれません。外部結合や列ABCなどは、一致するレコードのみを返すテーブルから来ています。おそらく内部結合を代わりに使用する必要がありますか? – xQbert

答えて

1

場合、またはそれがある場合、私はあなたが探しているが不明だようnullは、2つの異なるものです。

場合はNULL

SELECT * FROM table WHERE a IS NOT NULL OR b IS NOT NULL OR c IS NOT NULL; 

場合は、空の

SELECT * FROM table WHERE a <> '' OR b <> '' OR c <> ''; 
+0

これをもう一度実行して、ISNULL()またはCOALESE()を使用して空とヌルを同時に比較する方法を示します。 WHERE COALESCE(a、 '')<> '' AND .... – Matt

+0

それはうまくいかないでしょう... – maplemale

+0

@maplemale私はANDのduncanと合意しています。しかし、ダンカン私はちょうどあなたの答えを読んだ私は空白のなぜあなたが使用しているとIS NULLの代わりにヌルではないですか?それは行1を除いてすべてのものを落とすでしょう。私はあなたがIS NULLとb IS NULLを使用することを意味すると思いますcはNULLです – Matt

2

あなたは本当にこれが使うテーブルのすべての列を確認したい場合は、次の

select * 
from the_table 
where not (the_table is null); 

この削除されますすべての列がすべての列nsはnullです。

あなただけの列のサブセットを確認したい場合(例えば、あなたが私たちを示さなかった生成PK列があるため)、使用は:

select * 
from the_table 
where not ((a,b,c) is null); 
+0

サイドの質問:オプティマイザはどれがもっと好きですか? NOT OR包括的OR演算子を持つ排他的AND演算子?それとも違いはありませんか?純粋な可読性オプションから、私はどこでも((a、b、c)がnullでない)好きなものは、読みやすさの観点から受け入れられた答えよりも良い答えです。しかし、多分それは構文的な砂糖ですか? – maplemale

関連する問題