2017-10-14 24 views
0

私のテーブルから、name_durchgefuehrtname_abgelehntおよびname_offenというIDの列を含む行だけを選択しようとしました。複数のWHERE IS NOT NULLクエリが空の行を返す

しかし、クエリでは、これらの値だけでなく、すべての列が出力されます。ここで

は私のクエリです:

SELECT id, name_durchgefuehrt, name_abgelehnt, name_offen 
FROM dashboard 
WHERE 
    name_durchgefuehrt IS NOT NULL 
    AND name_abgelehnt IS NOT NULL 
    AND name_offen IS NOT NULL 

結果:

enter image description here


EDIT:

はい、私はそれはあなたのほとんどのための簡単な質問ですけどしかし、私はVAの誤った理解を持っていたlue 'Null'と私はこのようにしなければならないと思った。

とにかくすべての回答に感謝します。

+1

大です。質問ありますか? [私は非常に単純なSQLクエリであると思われるものに対してMCVEを提供するのはなぜですか?](http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for- what-seem-to-me-to-be-a-very-simple-sql-query) – Strawberry

+2

あなたが求めたものを正確に与えるクエリ。質問はなんですか? – alroc

+1

NULLは空文字列と異なります。 –

答えて

2

NULL''(空文字列)ではありません。IS NULLでテストできる特別な状態です。

しかし<> ''だから両方NULL''

を除外します:

SELECT id,name_durchgefuehrt,name_abgelehnt,name_offen 
FROM dashboard 
WHERE 
    name_durchgefuehrt <> '' 
    AND 
    name_abgelehnt <> '' 
    AND 
    name_offen <> '' 
+1

ああ。なぜ「COALESCE」ですか? 'name_durchgefuehrt <> '''はヌルや空文字列を返しません。 –

+1

@MartinSmithまあまあまあまあ、忘れてしまいました、少し最近になって 'COALESCE'を使いました、更新されたu_u – Blag

+0

ありがとうございました!これは私のために働く! – Ck2513

1

をあなたの値は、空の文字列でない場合、私は希望に必要なヌル

1

ではなくそれは `s確認する必要があります文字列は空に見えるスペースで構成することもできます。したがって、より一般的な方法では空白を取り除くことができます。

SELECT id, name_durchgefuehrt, name_abgelehnt, name_offen 
FROM dashboard 
WHERE TRIM(name_durchgefuehrt) <> '' AND 
     TRIM(name_abgelehnt) <> '' AND 
     TRIM(name_offen) <> '' IS NOT NULL; 

正規表現が使用されている可能性があります。たとえば、空白文字のセットがある場合:

SELECT id, name_durchgefuehrt, name_abgelehnt, name_offen 
FROM dashboard 
WHERE name_durchgefuehrt regexp '[^[:space]]' AND 
     name_abgelehnt regexp '[^[:space]]' AND 
     name_offen regexp '[^[:space]]'; 
関連する問題