MySQL の ISNULL()・COALESCE()

ここでは MySQL の ISNULL() と COALESCE() 関数についてご説明します。

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

MySQL の ISNULL() 関数の使い方

MySQL の ISNULL() 関数は、引数をひとつ受け取り、引数が NULL の時に 1 を、NULLではない時には 0 を返す関数です。

ISNULL(引数);

SQL Server の ISNULL() 関数は引数を二つ受け取り、第一引数が NULL の時は第二引数を返す関数ですが、MySQL で同様の関数を使いたい時には COALESCE()IFNULL() 関数が使えます。


ISNULL() 関数を使ってみましょう。

SELECT 	ISNULL(10),
		ISNULL('a'),
		ISNULL(''),
		ISNULL(NULL);

[実行結果]

MySQL の ISNULL()・COALESCE() 1

NULL を渡した時だけ、戻り値が 1 に、それ以外は 0 になっています。


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

MySQL の ISNULL()・COALESCE() 2


この exam_results テーブル の score カラムの値を ISNULL() 関数に渡すと次のようになります。

SELECT 	score,
		ISNULL(score)
FROM 	exam_results;

[実行結果]

MySQL の ISNULL()・COALESCE() 3

score が NULL の時は ISNULL(score) が 1 に、それ以外は 0 になっています。


MySQL の COALESCE() 関数の使い方

MySQL の COALESCE() 関数は、複数の引数を受け取り、NULL ではない最初の引数を返す関数です。

COALESCE(引数1, 引数2, ..., 引数n);

全ての引数が NULL の場合は NULL を返します。


COALESCE() 関数を使ってみましょう。

SELECT 	COALESCE('a', 'b', 'c'),
		COALESCE(NULL, 'b', 'c'),
		COALESCE(NULL, NULL, 'c'),
		COALESCE(NULL, NULL, NULL),
        COALESCE(NULL, 1, 2.2, 'd'),
		COALESCE(NULL, NULL, 2.2, 'd', NULL);

[実行結果]

MySQL の ISNULL()・COALESCE() 4

引数を前から確認していって、NULL ではない値を返していますね。

引数が全部 NULL の時だけ、COALESCE() は NULL を返しています。


COALESCE() 関数を使って、先ほどの exam_results テーブル の score カラムの値が NULL の時は 'N/A' という文字列を返したい時には次のようにできます。

SELECT 	score,
		COALESCE(score, 'N/A')
FROM 	exam_results;

[実行結果]

MySQL の ISNULL()・COALESCE() 5

score が NULL の時は 'N/A' が返っていますね。


以上、MySQL の ISNULL() と COALESCE() 関数についてご説明しました。

© 2024 MySQL 入門