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);
[実行結果]
NULL を渡した時だけ、戻り値が 1 に、それ以外は 0 になっています。
次のような exam_results テーブルがあります。
この exam_results テーブル の score カラムの値を ISNULL() 関数に渡すと次のようになります。
SELECT score,
ISNULL(score)
FROM exam_results;
[実行結果]
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);
[実行結果]
引数を前から確認していって、NULL ではない値を返していますね。
引数が全部 NULL の時だけ、COALESCE() は NULL を返しています。
COALESCE() 関数を使って、先ほどの exam_results テーブル の score カラムの値が NULL の時は 'N/A' という文字列を返したい時には次のようにできます。
SELECT score,
COALESCE(score, 'N/A')
FROM exam_results;
[実行結果]
score が NULL の時は 'N/A' が返っていますね。
以上、MySQL の ISNULL() と COALESCE() 関数についてご説明しました。