私はSQLでNULLの意味を完全に理解していないと思います。私はこのSQLを実行し、出力として1を見ることを期待しましたが、私はそれを見ませんでした:"select 1 where NULL <> -1;"の出力
select 1 where NULL <> -1;
NULLと-1は異なりますか?誰でも "NULL <> -1"のこの句が偽である理由を説明できますか?
私はSQLでNULLの意味を完全に理解していないと思います。私はこのSQLを実行し、出力として1を見ることを期待しましたが、私はそれを見ませんでした:"select 1 where NULL <> -1;"の出力
select 1 where NULL <> -1;
NULLと-1は異なりますか?誰でも "NULL <> -1"のこの句が偽である理由を説明できますか?
NULL
は不明です。したがって、where NULL <> -1
では、未知の値が-1に等しいかどうかを知りたいと思っています。 DBMSは(もちろん)知らないので、式の結果はTRUE
でもFALSE
でもありません。それはNULL
です。
WHERE
句の結果となる行のみが選択されます(TRUE
)。式がTRUE
ではなく、NULL
になるため、選択された行はありません。
実際、NULLとの比較の結果はUNKNOWNであり、NULLではありません。 – dnoeth
@dnoeth:いいえ、NULL *は* unknown *のデータベース名です。 'select 1 where(null = -1)is null'を試してください。 (PostgreSQLのテストはhttp://sqlfiddle.com/#!15/9eecb7db59d16c80417c72d1e1f4fbf1/11585です。) –
カラムは 'NULL'でも構いませんが、決して比較の結果ではありません。そのため、' IS UNKNOWN'が標準SQL(とPostgreSQLも)。 https://books.google.de/books?id=efe2wB_DfxYC&pg=PA219&lpg=PA219&dq=%22Truth+table+for+the+AND+boolean+operator%22&source=bl&ots=DfT9W4xLGF&sig=Yee-tSw5oQjTfoazWtRYEzuXBMM&hl=de&saのページをご覧ください。 = X&ved = 0ahUKEwjQ6ICmrpfPAhWBpiwKHVNQBo0Q6AEIJTAB #v = 1ページとq =%22Truth%20table%20for%20the%20and%20boolean%20operator%22&f = false – dnoeth
基本的に、 'IS NULL'以外のすべての比較は、" false "または" NULL "を返します。つまり、それらは真実ではなく、行は除外されます。 –
NULL値ではないため、比較できません。 – Joe
と '何かが何かNULLではない 'と言う理由 –