MySQLのSELECTでNULL値を0に変換し、新しい列として表示する方法
IFNULL()関数でNULL値を0に置き換える
MySQLでは、SELECT文の実行結果においてNULL値を別の値(ここでは0)に置き換えて表示したいケースがよくあります。そんなときに便利なのがIFNULL()関数です。IFNULL()は、第1引数がNULLでない場合はその値をそのまま返し、NULLである場合は第2引数で指定した代替値を返します。
基本構文は以下の通りです。IFNULL(列名, 代替値)
サンプルテーブルの作成
まず、動作確認用のテーブルを作成しましょう。
mysql> create table DemoTable (Value int); Query OK, 0 rows affected (1.02 sec)
レコードの挿入
次に、insertコマンドでテーブルにデータを挿入します。ここでは意図的にNULL値も含めています。
mysql> insert into DemoTable values(NULL); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values(10); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable values(20); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable values(NULL); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(30); Query OK, 1 row affected (0.13 sec)
select文ですべてのレコードを表示して確認してみましょう。
mysql> select *from DemoTable;
上記のクエリを実行すると、次のような出力が得られます。
+-------+ | Value | +-------+ | NULL | | 10 | | 20 | | NULL | | 30 | +-------+ 5 rows in set (0.00 sec)
「Value」列にNULLが2つ含まれていることが確認できます。
NULLを0に変換して新しい列に表示する
元の列をそのまま残しつつ、NULLを0に置き換えた値を別の列として表示するには、次のようにクエリを記述します。
mysql> select Value,IFNULL(Value,0) from DemoTable;
実行結果は以下の通りです。
+-------+-----------------+ | Value | IFNULL(Value,0) | +-------+-----------------+ | NULL | 0 | | 10 | 10 | | 20 | 20 | | NULL | 0 | | 30 | 30 | +-------+-----------------+ 5 rows in set (0.00 sec)
このように、元の「Value」列にはNULLがそのまま表示される一方、「IFNULL(Value,0)」の列ではNULLがすべて0に置き換えられて表示されます。
補足:AS句で見出しを付け、COALESCE()でも代用できる
AS句を使えば、出力列にわかりやすい別名を付けることができます。
mysql> select Value, IFNULL(Value, 0) AS ValueWithZero from DemoTable;
また、COALESCE()関数を使っても同じ結果が得られます。COALESCE()は引数の中から最初に現れたNULL以外の値を返す関数で、引数が2つの場合はIFNULL()と同じ動作になります。
mysql> select Value, COALESCE(Value, 0) from DemoTable;
用途に応じてこれらの関数を使い分けることで、NULL値を含むデータも読みやすく整形して表示できます。
-
MySQLで45日後の日付を計算し、新しい列として表示するクエリの書き方
MySQLで45日後の日付を新しい列に表示する方法 日付・時刻型の列に45日を加算し、その結果を元の列とは別の新しい列として表示したい場合は、date_add() 関数を使うのが最も簡単です。ここでは、テーブルの作成からデータの挿入、そして45日を加算するクエリの実行まで、手順を追って解説します。 1. テーブルを作成する まず、DATETIME型の列「DueTime」を持つテーブルを作成します。 mysql> create table DemoTable1930 ( DueTime datetime ); Query OK, 0 rows affected (
-
【MySQL入門】NULL値に応じて新しい列にカスタムテキストを表示する方法
MySQLでは、IF()関数を活用することで、カラムの値がNULLかどうかを判定し、その結果に応じて新しい列に任意のカスタムテキストを表示できます。本記事では、実際のサンプルコードとともにその手順をわかりやすく解説します。1. サンプルテーブルを作成するまず、学生名を格納するシンプルなテーブルを作成しましょう。mysql> create table DemoTable1953 ( StudentName varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. テストデータを挿入する次に、INSERT文を使ってレコ