MySQLで空白セルだけをNULLに更新する方法|NULLIF()関数の使い方を解説
MySQLで空白(空文字列)のセルだけをNULLに更新したい場合は、NULLIF()関数を使うのが便利です。結論から言うと、この方法では「すべてのセル」がNULLになることはなく、空文字列のセルだけがNULLに置き換えられます。この記事では、実際にテーブルを作成して動作を確認しながら、具体的な手順を解説します。
1. テーブルの作成
まず、サンプル用のテーブルを作成します。
mysql> create table DemoTable
(
Name varchar(50)
);
Query OK, 0 rows affected (1.73 sec)2. レコードの挿入
INSERT文を使って、いくつかのレコードを挿入します。ここでは、値が入っているレコードと空文字列('')のレコードを混在させています。
mysql> insert into DemoTable values('Mike');
Query OK, 1 row affected (0.07 sec)
mysql> insert into DemoTable values('');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.07 sec)
mysql> insert into DemoTable values('');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Mike');
Query OK, 1 row affected (0.15 sec)3. 現在のデータを確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下のとおりです。
+-------+ | Name | +-------+ | Mike | | | | David | | | | Mike | +-------+ 5 rows in set (0.00 sec)
4. 空白セルだけをNULLに更新する
ここで本題となるクエリです。NULLIF(Name, '')は、Nameの値が空文字列('')と等しい場合にNULLを返し、それ以外の場合は元の値をそのまま返す関数です。これにより、空白セルだけが選択的にNULLへ更新されます。
mysql> update DemoTable set Name=NULLIF(Name,''); Query OK, 2 rows affected (0.19 sec) Rows matched: 5 Changed: 2 Warnings: 0
実行結果の「Changed: 2」からも、変更されたのは2行だけであることがわかります。
5. 更新結果の確認
もう一度テーブルの内容を確認してみます。
mysql> select *from DemoTable;
実行結果を見ると、「Mike」と「David」のデータはそのまま維持され、空白だった2つのセルだけがNULLに更新されていることがわかります。
+-------+ | Name | +-------+ | Mike | | NULL | | David | | NULL | | Mike | +-------+ 5 rows in set (0.00 sec)
まとめ
UPDATE文でNULLIF(カラム名, '')を使用すれば、MySQLのテーブル内で空白のセルだけを選択的にNULLへ更新できます。すべてのセルがNULLになるわけではなく、空文字列に一致したセルのみがNULLに置き換わる点に注意してください。なお、NULLと空文字列('')は別の値として扱われるため、データの整合性を保ちたい場合や、集計・検索時にNULLと空文字列を区別したい場合に、この方法が非常に有効です。
-
MySQLで空白(空文字列)の列をNULLに更新する方法
データベースを運用していると、「空文字列()」として登録されてしまったデータを「NULL」に置き換えたいケースによく出会います。NULLと空文字列は似ているようで意味が異なり、検索条件や集計処理に影響を与えるため、統一しておくことが重要です。この記事では、IF()関数とUPDATE文を組み合わせて、空白値の列をNULLに更新する手順を、実際のSQLコードと実行結果付きで解説します。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成します。ここでは氏名を格納するシンプルなテーブルを用意しました。mysql> create table DemoTable1601 -&g
-
MySQLでテーブル内のNULLまたはNULL以外のフィールドを一括更新する方法
はじめにMySQLでは、IS NULL 演算子や IS NOT NULL 演算子を WHERE 句と組み合わせることで、テーブル内の NULL 値または NULL 以外の値が含まれるレコードを条件として、複数のフィールドをまとめて更新できます。本記事では、具体的なサンプルを使ってその手順をわかりやすく解説します。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> );Query OK, 0