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

MySQLのCOALESCE()関数で最初のNULL以外の値を取得する方法

MySQLのCOALESCE()関数とは

MySQLのCOALESCE()関数は、引数として渡された複数のカラムや値の中から、最初に見つかったNULL以外(NOT NULL)の値を返す関数です。この関数を活用することで、NULLが含まれるカラムを効率的に処理し、代替値を表示できます。

ここでは、実際にテーブルを作成してデータを挿入し、COALESCE()関数の動作を確認していきましょう。

1. テーブルの作成

まず、サンプル用のテーブルを作成します。

mysql> create table DemoTable1927
    (
    StudentName varchar(20),
    StudentSubject varchar(20)
    );
Query OK, 0 rows affected (0.00 sec)

「StudentName」と「StudentSubject」という2つのカラムを持つテーブル「DemoTable1927」を作成しました。

2. データの挿入

次に、INSERTコマンドを使ってレコードを挿入します。意図的にNULLを含むデータも登録しておきます。

mysql> insert into DemoTable1927 values('Chris','MySQL');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1927 values('David',NULL);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1927 values(NULL,'MongoDB');
Query OK, 1 row affected (0.00 sec)

以下の3件のレコードが挿入されました。

  • Chris / MySQL(どちらも値あり)
  • David / NULL(科目がNULL)
  • NULL / MongoDB(名前がNULL)

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

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

mysql> select * from DemoTable1927;

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

+-------------+----------------+
| StudentName | StudentSubject |
+-------------+----------------+
| Chris       |           MySQL |
| David       |            NULL |
| NULL        |         MongoDB |
+-------------+----------------+
3 rows in set (0.00 sec)

2行目と3行目にNULLが含まれていることが確認できます。

4. COALESCE()関数を使って最初のNULL以外の値を取得

それでは、COALESCE()関数を使って「StudentName」がNULLの場合は「StudentSubject」の値を返すクエリを実行してみましょう。

mysql> select coalesce(StudentName,StudentSubject) as Result from DemoTable1927;

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

+---------+
| Result  |
+---------+
| Chris   |
| David   |
| MongoDB |
+---------+
3 rows in set (0.00 sec)

結果の解説

出力結果を見ると、以下のように動作していることがわかります。

  • Chris:StudentNameに値があるため、「Chris」がそのまま返される
  • David:StudentNameに値があるため、「David」が返される
  • MongoDB:StudentNameがNULLのため、次の引数であるStudentSubjectの値「MongoDB」が返される

このように、COALESCE()関数は左から順に引数を評価し、最初に見つかったNULL以外の値を返します。すべての引数がNULLだった場合はNULLを返します。

まとめ

MySQLのCOALESCE()関数を使えば、複数のカラムの中から最初のNULL以外の値を簡単に取得できます。NULL値のデフォルト値設定や、データの欠損補完など、実務でも頻繁に活用できる便利な関数なので、ぜひ覚えておきましょう。

  1. MySQLでIN句に指定した値のみを任意の順序で表示する方法

    MySQLでIN句に指定した値のみを任意の順序で表示する方法MySQLでは、IN()とORDER BY句、さらにFIELD()関数を組み合わせることで、IN句内に指定した値だけを、希望する独自の順序で表示できます。通常のORDER BYは昇順・降順のソートしかできませんが、FIELD()関数を使えば自由に並び順を定義できるのがポイントです。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable1986(Number int);Query OK, 0 rows affected (0.00 sec)次に、INSERTコマ

  2. Javaを使用してMySQLテーブルの値を表示する方法

    MySQLデータベースのテーブル値をJavaで表示するには、ResultSetの概念を利用します。データベースへの接続には、MySQL JDBCドライバーを使用します。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table demo87    -> (    -> name varchar(20),    -> age int    -> )