MySQLのCASEステートメントでNULLをカスタム値に置き換える方法
MySQLでは、テーブル内のNULL値をそのまま表示するのではなく、「UNKNOWN NAME」のような分かりやすいカスタム値に置き換えて取得したい場面があります。本記事では、CASEステートメントとIFNULL()関数の2つの方法を使って、NULL値を任意の値に変換する手順をサンプルコード付きで解説します。
1. サンプルテーブルの作成
まず、動作確認用のテーブルを作成します。
mysql> create table DemoTable
(
FirstName varchar(20)
);
Query OK, 0 rows affected (1.15 sec)2. テストデータの挿入
次に、INSERT文を使って通常の値とNULL値が混在したレコードを挿入します。
mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(NULL);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Adam');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(NULL);
Query OK, 1 row affected (0.09 sec)3. 現状のデータを確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。FirstName列にNULLが含まれていることが確認できます。
+-----------+ | FirstName | +-----------+ | John | | NULL | | Adam | | NULL | +-----------+ 4 rows in set (0.00 sec)
4. CASEステートメントでNULLを置き換える
CASEステートメントを使うと、条件に応じて表示する値を切り替えられます。FirstNameがNULLの場合は「UNKNOWN NAME」を返し、それ以外は元の値をそのまま返すようにします。
mysql> select case when FirstName is NULL then 'UNKNOWN NAME' else FirstName end AS FirstName from DemoTable;
実行結果を見ると、NULLだった行がすべて「UNKNOWN NAME」に置き換わっています。
+--------------+ | FirstName | +--------------+ | John | | UNKNOWN NAME | | Adam | | UNKNOWN NAME | +--------------+ 4 rows in set (0.00 sec)
このようにCASEステートメントを使えば、NULL判定だけでなく、より複雑な複数条件での値の変換にも柔軟に対応できます。
5. IFNULL()関数で同じ結果を得る
NULLの置き換えだけが目的であれば、IFNULL()関数を使うとさらにシンプルに記述できます。第1引数がNULLだった場合に、第2引数で指定した値を返します。
mysql> select IFNULL(FirstName,'UNKNOWN NAME') AS FirstName from DemoTable;
実行結果はCASEステートメントと完全に同じになります。
+--------------+ | FirstName | +--------------+ | John | | UNKNOWN NAME | | Adam | | UNKNOWN NAME | +--------------+ 4 rows in set (0.00 sec)
まとめ
NULL値をカスタム値に置き換えるには、CASEステートメントとIFNULL()関数のどちらでも対応可能です。単純なNULL置き換えならIFNULL()が簡潔でおすすめですが、複数の条件分岐が必要なケースではCASEステートメントが便利です。用途に応じて使い分けるとよいでしょう。
-
【MySQL入門】NULL値に応じて新しい列にカスタムテキストを表示する方法
MySQLでは、IF()関数を活用することで、カラムの値がNULLかどうかを判定し、その結果に応じて新しい列に任意のカスタムテキストを表示できます。本記事では、実際のサンプルコードとともにその手順をわかりやすく解説します。1. サンプルテーブルを作成するまず、学生名を格納するシンプルなテーブルを作成しましょう。mysql> create table DemoTable1953 ( StudentName varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. テストデータを挿入する次に、INSERT文を使ってレコ
-
MySQLでNULL値を1として表示・更新する方法
MySQLでは、テーブル内のNULL値を別の値(たとえば「1」)に置き換えて扱いたい場面があります。この記事では、IFNULL関数とUPDATE文を組み合わせて、NULL値を1に変換する具体的な手順をサンプルコード付きで解説します。 1. サンプルテーブルを作成する まず、動作確認用のテーブルを作成します。 mysql> create table DemoTable1963 ( Counter int ); Query OK, 0 rows affected (0.00 sec) 2. レコードを挿入する INSERT文を使って、NULLを含む複数のレコードを