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

【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値が混在するデータを整形して表示したい場合に非常に便利な関数ですので、ぜひ活用してみてください。

  1. MySQLで列の値から先頭の1文字を取り出し、別の列に挿入する方法

    はじめにMySQLである列(カラム)の値から先頭の1文字を取り出し、それを別の列に格納したい場合があります。このようなときに便利なのが LEFT() 関数です。LEFT() 関数は、文字列の左端から指定した文字数だけを抽出することができます。ここでは、実際にテーブルを作成しながら、その手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。ここでは「FirstLetter」(先頭文字を格納する列)と「Title」(元となる文字列の列)の2つの列を持つテーブルを定義します。mysql> create table DemoTable2036 

  2. MySQLで値が「0」の場合に別の列から値を取得する方法

    MySQLで値が「0」の場合に別の列から値を取得する方法MySQLでは、IF()関数を使用することで、特定の列の値が「0」だった場合に、別の列の値を代わりに取得できます。条件分岐を1つのクエリ内で簡単に実現できる便利な関数です。IF()関数の基本構文select IF(yourColumnName1=0,yourColumnName2,yourColumnName1) as anyAliasName from yourTableName;この構文では、最初の列の値が「0」であれば2番目の列の値を返し、「0」以外であれば最初の列の値をそのまま返します。サンプルテーブルの作成まず、動作確認用のテー