2012-02-15 6 views
2

私は変数varを持つpgplsql関数を書いています。これはNULLであるか、後でクエリで私がやる:NULLのVARの場合には、SQL:変数がnullの場合に変数の値をチェックする条件を書くのに最適な方法

SELECT * FROM table WHERE column = NULL 

になるようにクエリがNULLで失敗し、

SELECT * FROM table WHERE column = var 

PostgreSQL documentationが言うように、ので、 null値は未知の値を表し、2つの未知の値が等しいかどうかは分かりません

私はCASE声明でそれを解決:

SELECT * FROM table WHERE 
(CASE WHEN var IS NULL THEN column IS NULL ELSE column = var END) = TRUE 

しかし、私はあなたが何か良い選択肢を持っていない...これは、問題を解決するための最良の方法です天気をわからないのですか?

答えて

5
SELECT * FROM table WHERE column IS NOT DISTINCT FROM var 
+0

これはドキュメントにも書かれています!私の悪い! – mdesantis

1

varがNULL値を持っている場合、あなたは本当にだけでNULLの列値を持つレコードを選択したいですか?または、それを「すべて選択」/「制限しない」として扱いたいでしょうか?

後者が当てはまる場合、このようなアプローチが有効です。 (これは私がMSSQLにネイティブであるための擬似コードです)。

SELECT * FROM table WHERE 
(var IS NULL AND column = column) OR column = var 
+0

'var'は' NULL'の値を持っていません、 'var'は' NULL'の値を持っていてもいなくてもかまいません:)とにかくあなたの解は正しいので+1です。ありがとうございました! – mdesantis

関連する問題