NULL
値については、慣れるまでは戸惑う点があるかもしれません。概念的には、NULL
は何もない値または不明な値を意味し、ほかの値とは多少異なる扱い方をします。NULL
かどうかを調べる場合、=
、<
、または
<>
などの算術比較演算子は使用できません。これを自分で試すには、以下のクエリを実行します。
mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;
+----------+-----------+----------+----------+
| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |
+----------+-----------+----------+----------+
| NULL | NULL | NULL | NULL |
+----------+-----------+----------+----------+
これらの比較から意味のある結果が得られないことは明らかです。この場合は、IS
NULL
および IS NOT NULL
の各演算子を使用します。
mysql> SELECT 1 IS NULL, 1 IS NOT NULL;
+-----------+---------------+
| 1 IS NULL | 1 IS NOT NULL |
+-----------+---------------+
| 0 | 1 |
+-----------+---------------+
注意: MySQL では、0
または
NULL
は false
(偽)を意味し、それ以外は true
(真)を意味します。ブール値演算では、true
を表すデフォルト値は 1
です。
このように NULL
は特別な扱い方をするので、前のセクションではペットが死んでいるかどうかを判断する際に
death <> NULL
ではなく、death IS NOT NULL
を使用しました。
GROUP BY
では、2 つの
NULL
値は等しいとみなされます。
ORDER BY
を処理する場合、NULL
値は、ORDER BY ... ASC
では先頭に表示され、ORDER BY ...
DESC
では最後に表示されます。
注意: MySQL 4.0.2 から 4.0.10
では、NULL
値が正しく処理されていないため、ソートが昇順か降順かに関係なく、常に先頭に表示されます。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.