このようにNULLを使用して変数を比較することは不可能である。SQLでCASE WHEN NULLを特別に処理しないのはなぜですか? SQLで
CASE x WHEN NULL THEN y ELSE z END
ため三値SQLロジックと、x = NULL
意志決してリターン真。一つは、代わりにこれを行う必要があります。xは、例えば、データを変更する手順の結果であるとき
CASE WHEN x IS NULL THEN y ELSE z END
は、これは問題がある:
のでCASE WHEN func(i) IS NULL THEN y
WHEN func(i) = 'a' THEN z
ELSE t
END
... func(i)
は二度評価されるのでしょうか? CASE ... WHEN NULL
がIS NULL
演算子を使用して評価式をNULL
と比較する標準的な要件はありません。
このような構成を可能にするDBMSがありますか?
func(i)の結果を保持するための一時変数を導入してcase文で使用できませんか? –
'WHEN'の後の値が単にリテラルであることは保証されていないので、より一貫性を持たせたり、NULLをNULLにするようにSQLを書き直すことなく特別なケースを作ることは簡単な方法ではありません。例えば。式が 'CASE func(i)WHEN Col1 THEN ...'で、 'Col1'がいくつかの行ではnullであるが、他の行ではない場合。 –