こんにちは、阿久梨絵です!
SQL のNULLは、一見すると単なる空の値のように思えますが、実際には「未定義」や「不明」を意味する特別な値です。
この性質のため、通常の数値や文字列とは異なる比較ルールが適用されます。
例えば
・「NULL = NULL」は常にFALSEになる(通常の値とは異なる)
・算術計算にNULLが含まれると結果もNULLになる(例:10 + NULL = NULL)
・集計関数ではNULLが無視される場合がある(例:AVG()の計算)
この特殊な振る舞いにより、SQLの条件設定やデータ処理に工夫が必要になります。
NULLの比較が通常の値と異なる理由
NULLは「値がない」ことを意味するため、通常の比較演算子(=, >, < など)が適用されません。
SELECT * FROM users WHERE age = NULL;・・・これは動作しない
NULL は何と比較しても「真(TRUE)」にはならず、結果は常に「不確定(UNKNOWN)」になる
そのため、正しく比較するには IS NULL を使う必要があります。
SELECT * FROM users WHERE age IS NULL; -・・・正しい書き方
NULLを扱う際の注意点と対策
・条件式では IS NULL / IS NOT NULL を使う
・計算にNULLを含める場合は COALESCE() を利用してデフォルト値を設定
・NULLを適切に処理しないと、予期しない結果を生むことがある
例えば
SELECT COALESCE(age, 0) AS valid_age FROM users;
COALESCE() を使うことで、NULLの場合にデフォルト値(ここでは`0`)を適用できます。
まとめ
・NULL は単なる「空の値」ではなく、「不明または未定義」を意味する特殊な値
・通常の比較演算子(= や < など)では比較できないため、IS NULL / IS NOT NULL を使う
・集計関数や計算に影響を与えるため、COALESCE() や適切な処理を行うことが重要
SQL のNULLを正しく理解し、予期しないバグを防ぎましょう!
阿久梨絵でした!