【MySQL】NULLでない場合はその列の値を返し、NULLの場合は別の列の値を返す方法
IFNULL()関数でNULL値を別の列の値に置き換える
MySQLでは、ある列の値がNULLでない場合はその値を返し、NULLの場合は別の列の値を返したいという場面があります。このような場合には、IFNULL()関数を使用すると簡単に実現できます。
1. テーブルの作成
まず、動作確認用のサンプルテーブルを作成しましょう。
mysql> create table DemoTable
(
FirstName varchar(100),
LastName varchar(100)
);
Query OK, 0 rows affected (0.62 sec)2. レコードの挿入
次に、insertコマンドを使ってテーブルにレコードを挿入します。意図的にNULLを含むデータも登録しておきます。
mysql> insert into DemoTable values('John','Doe');
Query OK, 1 row affected (0.29 sec)
mysql> insert into DemoTable values(NULL,'Taylor');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('David',NULL);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(NULL,'Miller');
Query OK, 1 row affected (0.12 sec)3. テーブルの内容を確認する
select文を使って、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+-----------+----------+ | FirstName | LastName | +-----------+----------+ | John | Doe | | NULL | Taylor | | David | NULL | | NULL | Miller | +-----------+----------+ 4 rows in set (0.00 sec)
4. IFNULL()を使ってNULL以外の値を取得する
以下のクエリでは、FirstNameがNULLでない場合はFirstNameの値を返し、NULLの場合はLastNameの値を返します。
mysql> select ifnull(FirstName,LastName) as Result from DemoTable;
実行結果は以下の通りです。
+--------+ | Result | +--------+ | John | | Taylor | | David | | Miller | +--------+ 4 rows in set (0.00 sec)
まとめ
このように、IFNULL(列名1, 列名2) を使うことで、列名1がNULLでない場合は列名1の値を、NULLの場合は列名2の値を取得できます。NULL値が混在するデータを整形して表示したい場合に非常に便利な関数ですので、ぜひ活用してみてください。
-
MySQLで列の値から先頭の1文字を取り出し、別の列に挿入する方法
はじめにMySQLである列(カラム)の値から先頭の1文字を取り出し、それを別の列に格納したい場合があります。このようなときに便利なのが LEFT() 関数です。LEFT() 関数は、文字列の左端から指定した文字数だけを抽出することができます。ここでは、実際にテーブルを作成しながら、その手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。ここでは「FirstLetter」(先頭文字を格納する列)と「Title」(元となる文字列の列)の2つの列を持つテーブルを定義します。mysql> create table DemoTable2036 
-
MySQLで値が「0」の場合に別の列から値を取得する方法
MySQLで値が「0」の場合に別の列から値を取得する方法MySQLでは、IF()関数を使用することで、特定の列の値が「0」だった場合に、別の列の値を代わりに取得できます。条件分岐を1つのクエリ内で簡単に実現できる便利な関数です。IF()関数の基本構文select IF(yourColumnName1=0,yourColumnName2,yourColumnName1) as anyAliasName from yourTableName;この構文では、最初の列の値が「0」であれば2番目の列の値を返し、「0」以外であれば最初の列の値をそのまま返します。サンプルテーブルの作成まず、動作確認用のテー