AIと戦って、あなたの人生のリスク診断 >>

指定値を否定した条件で、NULLも含めた指定値以外を取得できる方法はありますでしょうか。
使用DBはMYSQLです。


test_table
ID,name,value
-----------
1,aaa,100
2,bbb,NULL
3,ccc,300
4,ddd,100
5,eee,NULL


SELECT * FROM test_table WHERE value = 100;
valueが100のもの、ID:1,2を取得していたのですが、
100以外のものを取得する必要がでてきました。

SELECT * FROM test_table WHERE NOT(value = 100);
こうすると、ID:3しか返ってきません。
valueがNULLのものも含めて取得したいのです。

NULLの値があることを考慮すれば、以下のような形で取得はできるのですが、
SELECT * FROM test_table WHERE NOT(value = 100) AND value IS NULL;

value = 100という条件に、NOTをつけるかつけないかのような簡単な方法でNULLまで取得したいのです。


実はコーディング中に悩んでいるのですが、
動的ページなため、WHERE条件が定まらないのとかなりの数になります。
当初の予定では、全ての条件を()で囲んでNOTをつけるだけにするつもりでした。
これができないとなると、一つ一つ条件を見てNOTを付加+IS NULLの条件追加をしないといけなくなりそうです。

なにか良い方法がありましたらご教授願います。

A 回答 (1件)

NULLを0とほぼ同値に扱ってもよい場合は以下のように処理ができます。



SELECT * FROM test_table WHERE NOT(coalesce(value,0) = 100)
もしくは

SELECT * FROM test_table WHERE coalesce(value,0) != 100

・・・coalesce()はnull以外の最初の引数を返します。
この場合はvalueがNULLの場合は0を返します。
    • good
    • 0
この回答へのお礼

大変参考になりました!!
こんな便利な関数があるんですね。ありがとうございました。

お礼日時:2008/09/02 17:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング