MySQL の IS NULL / IS NOT NULL

ここでは MySQL の IS NULL と IS NOT NULL 演算子についてご説明します。

サンプルデータベースのテーブルを使いますので、実際にスクリプトを実行してみたい方は、こちら のスクリプトを実行して school_db データベースを作成しておいてください。

MySQL の IS NULL 演算子

MySQL でクエリーでデータを取得する際に、あるカラムの値が NULL のレコードを取得したい時があると思います。

そんな時に WHERE 句で [カラム名] = NULL のように書いても、そのカラムの値が NULL のレコードを取得することはできません。

値が NULL のレコードを取得したい時は IS NULL 演算子を使って、[カラム名] IS NULL のように指定します。


IS NULL 演算子を使ってテーブルからデータを取得してみましょう。

次のような exam_results テーブルがあります。

MySQL の IS NULL / IS NOT NULL 1


この exam_results テーブルから score が NULL のデータのみを取得したい時は次のようにできます。

SELECT 	* 
FROM 	exam_results
WHERE 	score IS NULL;

[実行結果]

MySQL の IS NULL / IS NOT NULL 2

score が NULL のレコードのみが取得できていますね。


ちなみに、IS NULL の代わりに = NULL を使うと次のようになります。

MySQL の IS NULL / IS NOT NULL 3

score = NULL は常に False になるので、取得されたレコードは 0 行です。


MySQL の IS NOT NULL 演算子

先ほどとは反対で、あるカラムの値が NULL ではないレコードを取得したい時があると思います。

そんな時に WHERE 句で [カラム名] <> NULL のように書いても、そのカラムの値が NULL ではないレコードを取得することはできません。

値が NULL ではないレコードを取得したい時は IS NOT NULL 演算子を使って、[カラム名] IS NOT NULL のように指定します。


IS NOT NULL 演算子を使ってテーブルからデータを取得してみましょう。

exam_results テーブルから score が NULL ではないデータのみを取得したい時は次のようにできます。

SELECT 	* 
FROM 	exam_results
WHERE 	score IS NOT NULL;

[実行結果]

MySQL の IS NULL / IS NOT NULL 4

score が NULL 以外のレコードが取得できていますね。


IS NOT NULL の代わりに <> NULL を使うと次のようになります。

MySQL の IS NULL / IS NOT NULL 5

score <> NULL は常に False になるので、レコードはひとつも取得されません。


以上、MySQL の IS NULL と IS NOT NULL 演算子についてご説明しました。

© 2024 MySQL 入門