MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで列がNULLの場合に特定の文字列を返す方法(COALESCE関数の使い方)

MySQLでデータベースを操作していると、NULL値を含む列を扱う場面がよくあります。NULLのまま表示すると分かりづらい場合、代わりに「Not Valid(無効)」などの特定の文字列を返したいことがあります。本記事では、COALESCE関数を使ってNULL値を任意の文字列に置き換える方法を、実際のSQL例とともに解説します。

サンプルテーブルの作成

まず、動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable
    -> (
    -> Name varchar(100)
    -> );
Query OK, 0 rows affected (0.85 sec)

レコードの挿入

INSERTコマンドを使って、テーブルにいくつかのレコードを挿入します。ここでは、意図的にNULL値を含むレコードも追加しています。

mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.17 sec)

mysql> insert into DemoTable values(NULL);
Query OK, 1 row affected (0.16 sec)

mysql> insert into DemoTable values(NULL);
Query OK, 1 row affected (0.20 sec)

mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.17 sec)

テーブルの内容を確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

出力結果

+-------+
| Name  |
+-------+
| John  |
| NULL  |
| NULL  |
| David |
+-------+
4 rows in set (0.00 sec)

このように、「Name」列にはNULL値が2件含まれていることが確認できます。

COALESCE関数でNULLを特定の文字列に置き換える

列がNULLの場合に特定の文字列を返すには、COALESCE関数を使用します。COALESCEは、引数の中から最初の非NULL値を返す関数です。第1引数がNULLだった場合、第2引数で指定した文字列がそのまま返されます。

mysql> SELECT COALESCE(Name, 'Not Valid') from DemoTable;

出力結果

+-----------------------------+
| COALESCE(Name, 'Not Valid') |
+-----------------------------+
| John                        |
| Not Valid                   |
| Not Valid                   |
| David                       |
+-----------------------------+
4 rows in set (0.00 sec)

実行結果を見ると、元々NULLだった行にはすべて「Not Valid」という文字列が表示されていることがわかります。

IFNULL関数との違い

同様の処理はIFNULL関数でも実現できます。IFNULL(Name, 'Not Valid')のように書けば、NameがNULLの場合に「Not Valid」が返されます。ただし、IFNULLは引数を2つしか受け取れないのに対し、COALESCEは複数の引数を指定できるため、より柔軟な条件分岐が必要なケースではCOALESCEの方が便利です。

まとめ

MySQLでNULL値を特定の文字列に置き換えるには、COALESCE関数(またはIFNULL関数)を使用します。レポート作成やアプリケーションの画面表示などで、NULLの代わりに分かりやすい文言を表示したい場合に役立つ、覚えておきたい基本テクニックです。

  1. MySQLでNULL値を特定の値に置き換える方法:IFNULL()関数の使い方

    MySQLでは、IFNULL()関数を使用することで、列に含まれるNULL値を検出し、任意の特定の値に置き換えて表示することができます。この記事では、サンプルテーブルの作成からIFNULL()を使ったクエリの実行まで、具体的な手順をわかりやすく解説します。 サンプルテーブルの作成 まず、以下のコマンドでテーブルを作成しましょう。ここでは、名前を格納する「FirstName」列を持つテーブルを定義します。 mysql> create table DemoTable1878 ( FirstName varchar(20) ); Query OK, 0 rows af

  2. MySQLのNOT NULL制約とは?空にできない列の定義方法とエラーの挙動を解説

    MySQLでは、列にNULL(空の値)を許可したくない場合、テーブル定義時にNOT NULL制約を指定します。NOT NULLが設定された列にNULLを挿入しようとすると、MySQLはエラーを返し、データの登録を拒否します。NOT NULL制約を持つテーブルの作成まず、Id列とLastName列をNOT NULLとして指定したテーブルを作成してみましょう。mysql> create table DemoTable1895 ( Id int NOT NULL, FirstName varchar(20), LastName varchar(20) NOT N