MySQLで空文字列をNULLに変換する方法|NULLIF()関数の使い方を解説
MySQLで空文字列をNULLに変換するには?
MySQLで空文字列('')をNULLに変換するには、NULLIF()関数を使用します。構文は以下の通りです。
SELECT NULLIF(カラム名, '') AS 任意の別名 FROM テーブル名;
NULLIF()関数は、第1引数と第2引数が等しい場合にNULLを返し、等しくない場合は第1引数の値をそのまま返す関数です。上記の構文では、空文字列('')と空文字列('')を比較すると結果は常にNULLになります。同様に、NULLと空文字列('')を比較した場合も、結果は常にNULLとなります。この特性を利用することで、空文字列をNULLへ変換できます。
動作確認用テーブルの作成
この構文の動作を理解するために、まずテーブルを作成しましょう。テーブル作成のクエリは以下の通りです。
mysql> create table ConvertEmptyStringToNULL
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Name varchar(20),
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.63 sec)
テストデータの挿入
次に、INSERTコマンドを使ってテーブルにレコードを挿入します。ここでは、通常の文字列('John'、'Carol')、空文字列('')、NULLを混在させて登録します。クエリは以下の通りです。
mysql> insert into ConvertEmptyStringToNULL(Name) values('John');
Query OK, 1 row affected (0.22 sec)
mysql> insert into ConvertEmptyStringToNULL(Name) values('');
Query OK, 1 row affected (0.15 sec)
mysql> insert into ConvertEmptyStringToNULL(Name) values(NULL);
Query OK, 1 row affected (0.14 sec)
mysql> insert into ConvertEmptyStringToNULL(Name) values('');
Query OK, 1 row affected (0.21 sec)
mysql> insert into ConvertEmptyStringToNULL(Name) values('Carol');
Query OK, 1 row affected (0.13 sec)
mysql> insert into ConvertEmptyStringToNULL(Name) values(NULL);
Query OK, 1 row affected (0.70 sec)挿入したデータの確認
SELECT文を使って、テーブル内のすべてのレコードを表示します。クエリは以下の通りです。
mysql> select *from ConvertEmptyStringToNULL;
出力結果は以下の通りです。Idが2と4のレコードには空文字列が、Idが3と6のレコードにはNULLが格納されていることが確認できます。
+----+-------+
| Id | Name |
+----+-------+
| 1 | John |
| 2 | |
| 3 | NULL |
| 4 | |
| 5 | Carol |
| 6 | NULL |
+----+-------+
6 rows in set (0.00 sec)
NULLIF()関数で空文字列をNULLに変換する
それでは、空文字列をNULLに変換するクエリを実行してみましょう。
mysql> select NULLIF(Name,'') as EmptyStringNULL from ConvertEmptyStringToNULL;
出力結果を見ると、空文字列だった箇所(Id 2と4に相当する行)がNULLに変換されていることがわかります。
+------------------+
| EmptyStringNULL |
+------------------+
| John |
| NULL |
| NULL |
| NULL |
| Carol |
| NULL |
+------------------+
6 rows in set (0.00 sec)
まとめ
NULLIF()関数を使えば、「第1引数と第2引数が等しい場合にNULLを返す」という仕組みを利用して、空文字列を簡単にNULLへ変換できます。SELECT文だけでなく、UPDATE文やINSERT時のデータクレンジングにも応用できるため、データの整合性を保ちたい実務のシーンでぜひ活用してみてください。
-
MySQLで空の文字列をNULLに更新する方法【LENGTH()関数の使い方】
LENGTH()関数を使って空の文字列をNULLに更新するMySQLで空の文字列()をNULLに置き換えるには、LENGTH()関数を使用します。文字列の長さが0であれば、その文字列が空であると判断できるためです。該当する行を特定したら、UPDATE文のSET句を使ってNULLに設定できます。まずは、動作を確認するためのサンプルテーブルを作成しましょう。mysql> create table DemoTable ( Name varchar(50) ); Query OK, 0 rows affected (0.68 sec)次に、INSE
-
【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コマンドでレコー