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

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と空文字列を区別したい場合に、この方法が非常に有効です。

  1. MySQLで空白(空文字列)の列をNULLに更新する方法

    データベースを運用していると、「空文字列()」として登録されてしまったデータを「NULL」に置き換えたいケースによく出会います。NULLと空文字列は似ているようで意味が異なり、検索条件や集計処理に影響を与えるため、統一しておくことが重要です。この記事では、IF()関数とUPDATE文を組み合わせて、空白値の列をNULLに更新する手順を、実際のSQLコードと実行結果付きで解説します。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成します。ここでは氏名を格納するシンプルなテーブルを用意しました。mysql> create table DemoTable1601 -&g

  2. MySQLでテーブル内のNULLまたはNULL以外のフィールドを一括更新する方法

    はじめにMySQLでは、IS NULL 演算子や IS NOT NULL 演算子を WHERE 句と組み合わせることで、テーブル内の NULL 値または NULL 以外の値が含まれるレコードを条件として、複数のフィールドをまとめて更新できます。本記事では、具体的なサンプルを使ってその手順をわかりやすく解説します。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> );Query OK, 0