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

MySQLでNULL値を0に置き換える方法:IFNULL関数の使い方を解説

MySQLでクエリを実行した際にNULL値が返ってくる場合、IFNULL()関数を使うことで、NULLを別の値(ここでは0)に置き換えることができます。この記事では、実際にテーブルを作成し、NULL値を含むデータに対してIFNULL()を適用する手順を順番に解説します。

サンプルテーブルの作成

まず、テスト用のテーブルを作成します。Idカラムは自動採番の主キーとし、ValueカラムにはNULLを許容するように定義します。

mysql> create table DemoTable
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Value int
-> );
Query OK, 0 rows affected (0.71 sec)

テストデータの挿入

次に、INSERTコマンドを使ってレコードを挿入します。意図的にNULL値を含むレコードも登録している点に注目してください。

mysql> insert into DemoTable(Value) values(100);
Query OK, 1 row affected (0.18 sec)

mysql> insert into DemoTable(Value) values(140);
Query OK, 1 row affected (0.12 sec)

mysql> insert into DemoTable(Value) values(200);
Query OK, 1 row affected (0.26 sec)

mysql> insert into DemoTable(Value) values(450);
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable(Value) values(null);
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable(Value) values(90);
Query OK, 1 row affected (0.11 sec)

mysql> insert into DemoTable(Value) values(null);
Query OK, 1 row affected (0.10 sec)

登録済みデータの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

出力結果

+----+-------+
| Id | Value |
+----+-------+
| 1 | 100 |
| 2 | 140 |
| 3 | 200 |
| 4 | 450 |
| 5 | NULL |
| 6 | 90 |
| 7 | NULL |
+----+-------+
7 rows in set (0.00 sec)

このように、Idが5と7のレコードにはNULL値が含まれていることが確認できます。

IFNULL()を使ってNULLを0に変換する

それでは本題です。以下のクエリでは、IFNULL(第一引数, 第二引数) の形式で使用しています。第一引数のValueがNULLでなければそのまま値を返し、NULLの場合は第二引数で指定した0を返します。

mysql> select ifnull(Value,0) AS Value from DemoTable;

出力結果

+-------+
| Value |
+-------+
| 100 |
| 140 |
| 200 |
| 450 |
| 0 |
| 90 |
| 0 |
+-------+
7 rows in set (0.00 sec)

まとめ

IFNULL()関数を使用すれば、クエリ結果に含まれるNULL値を簡単に0などの任意のデフォルト値へ置き換えられます。なお、MySQLではCOALESCE()関数も同様の用途で使えます。COALESCE()は複数の引数を取ることができ、最初にNULL以外と評価された値を返すため、より柔軟な処理が必要な場合に便利です。

  1. MySQLで複数のカラムにNULL値を含むレコードを検索する方法

    はじめにMySQLで複数のカラムの中にNULL値が1つでも含まれているレコードを抽出したい場合、GREATEST()関数を活用するのが効果的です。GREATEST()は引数の中から最大値を返す関数ですが、引数のいずれかにNULLが含まれている場合、結果もNULLを返すという特性があります。この特性を利用すれば、複数カラムにわたるNULL値のチェックをシンプルな条件式で実現できます。この記事では、実際にテーブルを作成し、サンプルデータを挿入して、NULL値を含むレコードを検索する手順を順番に解説します。テーブルの作成まず、4つのINT型カラムを持つテーブルを作成しましょう。mysql> c

  2. MySQLでNOT NULLの値に対して1を設定する方法(IF関数とIS NOT NULLの使い方)

    MySQLでNOT NULLの値に1を設定するにはMySQLでは、IS NOT NULL演算子とIF()関数を組み合わせることで、値がNULLでない場合に「1」、NULLの場合に「0」を返すことができます。データの存在チェックやフラグ管理など、さまざまな場面で活用できる便利なテクニックです。基本構文NOT NULLかどうかを判定して1を設定する基本構文は以下のとおりです。select if( is not NULL,1,0) as anyAliasName;実際に動作するクエリを見てみましょう。mysql> select if( is not NULL,1,0);このクエリを実行すると、