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

MySQLでフィールドがNULLの場合に別のフィールドの値を取得する方法(COALESCE関数の使い方)

MySQLでは、COALESCE()関数を使うことで、指定したフィールドがNULLだった場合に、代わりに別のフィールドの値を取得できます。COALESCE()は、引数として渡された値の中から最初に見つかったNULL以外の値を返す関数です。

1. サンプルテーブルの作成

まず、以下のコマンドでテーブルを作成します。

mysql> create table DemoTable1470
-> (
-> FirstName varchar(20),
-> Age int
-> );
Query OK, 0 rows affected (0.57 sec)

2. レコードの挿入

INSERTコマンドを使って、いくつかのレコードを追加します。意図的にNULLを含むデータも登録している点に注目してください。

mysql> insert into DemoTable1470 values('Robert',23);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1470 values('Bob',NULL);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1470 values(NULL,25);
Query OK, 1 row affected (0.15 sec)

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

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

mysql> select * from DemoTable1470;

実行結果は以下のとおりです。

+-----------+------+
| FirstName | Age |
+-----------+------+
| Robert | 23 |
| Bob | NULL |
| NULL | 25 |
+-----------+------+
3 rows in set (0.00 sec)

4. COALESCE()でNULLの場合に別のフィールドを選択する

以下のクエリでは、FirstNameがNULLの場合に、代わりにAgeの値を返しています。

mysql> select coalesce(FirstName,Age) as FirstNameOrAgeValue from DemoTable1470;

実行結果は次のようになります。

+---------------------+
| FirstNameOrAgeValue |
+---------------------+
| Robert |
| Bob |
| 25 |
+---------------------+
3 rows in set (0.00 sec)

まとめ

COALESCE()は複数の引数を受け取ることができ、左から順に評価して最初のNULL以外の値を返します。上記の例では、FirstNameが「Robert」や「Bob」の場合はその名前がそのまま返され、NULLの場合はAgeの値である「25」が返されています。

なお、似たような用途にはIFNULL()関数もありますが、IFNULL()は引数を2つしか取れないのに対し、COALESCE()は3つ以上のフィールドにも対応できるため、より柔軟なNULL処理を実現できます。表示用のデータ整形やレポート作成時に、欠損値を補完したいケースでぜひ活用してください。

  1. MySQLでSELECTクエリを使用してデータを挿入(INSERT)する方法

    MySQLでは、INSERT文とSELECTクエリを組み合わせることで、テーブルにデータを挿入することができます。通常、SELECTは既存のテーブルからデータを取得するために使われますが、値を直接指定してINSERTを実行する際にも活用できる便利な手法です。基本構文SELECTクエリを使用してINSERTを実行する場合の構文は以下の通りです。insert into yourTableName(yourColumnName1,yourColumnName2,yourColumnName3,...N) select yourValue1,yourValue2,yourValue3,......N;

  2. MySQLでGROUP BYを使ってグループ化し合計(SUM)を求める方法

    MySQLで合計を求めるには、集計関数SUM()を使用します。さらにGROUP BY句と組み合わせることで、特定のカラムごとにデータをグループ化し、それぞれのグループの合計値を取得できます。この記事では、商品名ごとに「数量 × 価格」の合計を求める例を通じて、GROUP BYとSUM()の基本的な使い方を解説します。 1. サンプルテーブルの作成 まず、以下のようにテーブルを作成します。 mysql> create table DemoTable -> ( -> ProductName varchar(20), -> ProductQuant