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値のデフォルト値設定や、データの欠損補完など、実務でも頻繁に活用できる便利な関数なので、ぜひ覚えておきましょう。
-
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コマ
-
Javaを使用してMySQLテーブルの値を表示する方法
MySQLデータベースのテーブル値をJavaで表示するには、ResultSetの概念を利用します。データベースへの接続には、MySQL JDBCドライバーを使用します。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table demo87 -> ( -> name varchar(20), -> age int -> )