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

MySQLで0をNULLに置き換える方法|NULLIF関数の使い方を実例付きで解説

MySQLではNULLIF()関数を使うことで、0をNULLに置き換えることができます。NULLIF関数は、第1引数と第2引数が等しい場合にNULLを返し、等しくない場合は第1引数の値をそのまま返す便利な関数です。

NULLIF関数の基本構文

0をNULLに置き換える際の基本的な構文は以下の通りです。

SELECT *, NULLIF(yourColumnName, 0) AS anyVariableName FROM yourTableName;

サンプルテーブルの作成

実際の動作を確認するため、まずはテスト用のテーブルを作成しましょう。以下のクエリを実行します。

mysql> create table Replace0WithNULLDemo
-> (
-> Id int NOT NULL auto_increment,
-> Name varchar(20),
-> Marks int,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.53 sec)

テストデータの挿入

次に、INSERTコマンドを使っていくつかのレコードを挿入します。ここでは、後ほど置き換えを確認できるよう、Marks列が0のレコードも意図的に含めています。

mysql> insert into Replace0WithNULLDemo(Name,Marks) values('John',76);
Query OK, 1 row affected (0.16 sec)

mysql> insert into Replace0WithNULLDemo(Name,Marks) values('Carol',86);
Query OK, 1 row affected (0.20 sec)

mysql> insert into Replace0WithNULLDemo(Name,Marks) values('Sam',0);
Query OK, 1 row affected (0.17 sec)

mysql> insert into Replace0WithNULLDemo(Name,Marks) values('Mike',0);
Query OK, 1 row affected (0.16 sec)

mysql> insert into Replace0WithNULLDemo(Name,Marks) values('Larry',98);
Query OK, 1 row affected (0.19 sec)

mysql> insert into Replace0WithNULLDemo(Name,Marks) values('Bob',0);
Query OK, 1 row affected (0.17 sec)

挿入したレコードの確認

SELECT文でテーブル内のレコードを表示してみましょう。

mysql> select *from Replace0WithNULLDemo;

実行結果は以下の通りです。

+----+-------+-------+
| Id | Name | Marks |
+----+-------+-------+
| 1 | John | 76 |
| 2 | Carol | 86 |
| 3 | Sam | 0 |
| 4 | Mike | 0 |
| 5 | Larry | 98 |
| 6 | Bob | 0 |
+----+-------+-------+
6 rows in set (0.00 sec)

NULLIF関数で0をNULLに置き換える

それでは、NULLIF関数を使って0をNULLに置き換えてみます。以下のクエリを実行してください。

mysql> select *,NULLIF(Marks,0) as ReplaceZeroWithNULL from Replace0WithNULLDemo;

実行結果を見ると、新しい列「ReplaceZeroWithNULL」が追加され、元の値が0だったレコードがすべてNULLに置き換えられていることが確認できます。

+----+-------+-------+---------------------+
| Id | Name | Marks | ReplaceZeroWithNULL |
+----+-------+-------+---------------------+
| 1 | John | 76 | 76 |
| 2 | Carol | 86 | 86 |
| 3 | Sam | 0 | NULL |
| 4 | Mike | 0 | NULL |
| 5 | Larry | 98 | 98 |
| 6 | Bob | 0 | NULL |
+----+-------+-------+---------------------+
6 rows in set (0.00 sec)

まとめ

MySQLで0をNULLに置き換えるには、NULLIF関数を使うのが最もシンプルで確実な方法です。NULLIF(列名, 0)と記述するだけで、値が0の場合はNULLを返し、それ以外の場合は元の値をそのまま返します。AVGなどの集計関数で0を除外したい場合や、データ分析時に欠損値として扱いたいケースで特に役立ちますので、ぜひ活用してみてください。

  1. MySQLでNULLを含む列の乗算を処理する方法|COALESCE関数の使い方

    MySQLでNULLを含む列の乗算を正しく計算するにはMySQLでは、数値型の列にNULLが含まれている場合、そのまま乗算すると結果もNULLになってしまいます。このような問題を回避するには、COALESCE() 関数を利用するのが効果的です。COALESCE()は、引数の中から最初に見つかった非NULLの値を返す関数で、NULLを別の値(ここでは「1」)に置き換えて計算できます。以下、実際の手順を見ていきましょう。1. サンプルテーブルを作成するまず、商品点数と金額を格納するテーブルを作成します。mysql> create table DemoTable1842   &nbs

  2. MySQLで特定の値を検索してNULLに置き換える方法をわかりやすく解説

    MySQLで値を検索してNULLに置き換える基本構文 MySQLでテーブル内の特定の値を見つけてNULLに置き換えたい場合は、UPDATE文とSET句を使って yourColumnName = NULL のように指定します。基本的な構文は以下の通りです。 update yourTableName set yourColumnName=NULL where yourColumnName=yourValue; WHERE句で対象となる値を指定することで、該当する行だけをNULLに更新できるのがポイントです。 サンプルテーブルの作成 まずは動作確認用のテーブルを作成しましょう。 mysql>