3値論理
普通は TRUE・FALSE の2つ。
SQLは TRUE・FALSE・UNKNOWNの3つ。
いつUNKNOWNになるの?
NULLが絡むとUNKNOWNになる。
WHERE A = NULL -- UNKNOWNになる
なのでIS NULLやIS NOT NULLがある。
WHERE A IS NULL OR A IS NOT NULL
NOT AND ORでUNKNOWNを評価するとどうなる?
一応これを知っておかないとハマりそう。
真理値の優先順位
とりあえずこれだけ覚えておけばOK
- AND:FALSE > UNKNOWN > TRUE
- OR: TRUE > UNKNOWN > FALSE
論理演算の評価一覧
NOT
- NOT TRUE = FALSE
- NOT FALSE = TRUE
- NOT UNKNOWN = UNKNOWN
AND
- TRUE AND TRUE = TRUE
- TRUE AND FALSE = FALSE
- TRUE AND UNKNOWN = UNKNOWN
- FALSE AND UNKNOWN = FALSE
- UNKNOWN AND UNKNOWN = UNKNOWN
OR
- TRUE OR TRUE = TRUE
- TRUE OR UNKNOWN = TRUE
- FALSE OR FALSE = FALSE
- FALSE OR UNKNOWN = UNKNOWN
- UNKNOWN OR UNKNOWN = UNKNOWN