MySQLでNULLを0に変換する方法|IFNULLとCOALESCEの使い方を実例で解説
MySQLでNULLを0に変換する方法
MySQLでは、テーブル内のNULL値をそのまま表示すると、集計やアプリケーション側の処理で扱いにくいケースがあります。そんなときは、IFNULL()関数またはCOALESCE()関数を使えば、NULLを簡単に0へ変換できます。
基本構文
IFNULL関数を使う場合の構文は以下のとおりです。第1引数がNULLの場合に、第2引数(ここでは0)が返されます。
SELECT IFNULL(yourColumnName, 0) AS anyAliasName FROM yourTableName;
COALESCE関数を使う場合の構文は次のとおりです。
SELECT COALESCE(yourColumnName, 0) AS anyAliasName FROM yourTableName;
補足: COALESCE関数は2つ以上の引数を受け取ることができ、「最初に現れたNULL以外の値」を返すという特徴があります。単純なNULL→0の置換であれば、どちらの関数でも同じ結果が得られます。
サンプルテーブルの作成
まず、動作確認用のテーブルを作成しましょう。テーブル作成クエリは次のとおりです。
mysql> create table convertNullToZeroDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(20),
-> Salary int
-> );
Query OK, 0 rows affected (1.28 sec)
テストデータの挿入
INSERTコマンドを使って、SalaryカラムにNULLを含むレコードを挿入します。
mysql> insert into convertNullToZeroDemo(Name, Salary) values('John', NULL);
Query OK, 1 row affected (0.20 sec)
mysql> insert into convertNullToZeroDemo(Name, Salary) values('Carol', 5610);
Query OK, 1 row affected (0.10 sec)
mysql> insert into convertNullToZeroDemo(Name, Salary) values('Bob', NULL);
Query OK, 1 row affected (0.15 sec)
mysql> insert into convertNullToZeroDemo(Name, Salary) values('David', NULL);
Query OK, 1 row affected (0.12 sec)
現在のデータを確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select * from convertNullToZeroDemo;
出力結果は以下のとおりです。SalaryカラムにNULLが含まれていることがわかります。
+----+-------+--------+ | Id | Name | Salary | +----+-------+--------+ | 1 | John | NULL | | 2 | Carol | 5610 | | 3 | Bob | NULL | | 4 | David | NULL | +----+-------+--------+ 4 rows in set (0.05 sec)
方法1:IFNULL関数でNULLを0に変換する
IFNULL関数を使って、NULLを0に置き換えて取得するクエリです。
mysql> select IFNULL(Salary, 0) as `CONVERT_NULL_TO_0` from convertNullToZeroDemo;
実行結果:
+--------------------+ | CONVERT_NULL_TO_0 | +--------------------+ | 0 | | 5610 | | 0 | | 0 | +--------------------+ 4 rows in set (0.05 sec)
NULLだったレコード(John、Bob、David)がすべて「0」として表示されました。
方法2:COALESCE関数でNULLを0に変換する
続いて、COALESCE関数を使った場合のクエリです。
mysql> select coalesce(Salary, 0) as `CONVERT_NULL_TO_0` from convertNullToZeroDemo;
実行結果:
+--------------------+ | CONVERT_NULL_TO_0 | +--------------------+ | 0 | | 5610 | | 0 | | 0 | +--------------------+ 4 rows in set (0.00 sec)
こちらもIFNULL関数と同様に、NULLがすべて0に変換されて出力されています。
まとめ
MySQLでNULLを0に変換したい場合は、IFNULL(カラム名, 0) または COALESCE(カラム名, 0) を使います。どちらも結果は同じですが、複数の候補値の中から最初の非NULL値を取りたい場合にはCOALESCEが便利です。レポートや集計処理でNULLを避けたい場面で、ぜひ活用してください。
-
【MySQL】空の値(空文字列)をNULLに変換するUPDATEクエリの書き方
MySQLでは、UPDATE文のSET句とWHERE句を組み合わせるだけで、カラムに入っている空の値(空文字列)をNULLへ簡単に変換できます。ここからは、実際のサンプルを使って手順を詳しく解説していきます。 1. サンプルテーブルを作成する まず、以下のコマンドでテーブルを作成しましょう。 mysql> create table DemoTable1315 -> ( -> CountryName varchar(10) -> ); Query OK, 0 rows affected (0.60 sec) 2. レコードを挿入する 次に、INSERTコマンドでレコー
-
MySQLで時間をHH:MM:SSからHH:MM形式に変換する方法
MySQLのTIME_FORMAT()関数で時間形式を変換するMySQLでTIME型の時間を「HH:MM:SS」から「HH:MM」形式に変換するには、TIME_FORMAT()関数を使用します。この関数を使うと、秒を取り除いた見やすい時間表示を簡単に実現できます。ここでは、実際の手順をサンプルコードとともに解説します。1. サンプルテーブルの作成まず、TIME型のカラムを持つテーブルを作成します。mysql> create table DemoTable1419-> (-> ArrivalTime time-> );Query OK, 0 rows affected (