弱弱エンジニアである僕がSQLのスキル向上を目指し、今回学んだことを備忘録としてまとめてみる。
3値論理
一般的なプログラミング言語では、「trueとfalse」が真偽値として知られているが、SQLでは3つ目の値として「unKnow」が定義されている。
- true・false = 2値論理
- true・false・unknow = 3値論理
= NULLとIS NULL
SQLでNULLの値を取得したい場合、IS NULLを使用する。
「でもこんなミスしたことない?」
※今でもたまにやる。。。
WHERE val = NULL
このときvalはNUllでも返ってくる値は当然false。
え。なんで??
理由はNULLを比較演算子で判定するとunknowが返ってくるから。
knowはfalseとして評価される。
unknowの挙動
unknow同士の比較
unknowは一つの論理値な為、
unknow = unknow
は、trueとして評価される。
AND・ORの挙動
ANDの場合
false > unknow > true
ORの場合
true > unknow > false
のパワーバランスで評価されます。
※ANDにunknowが入ると絶対にtrueにならない!