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

【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コマンドでレコードを挿入します。このとき、意図的にいくつか空の値('')も含めています。

mysql> insert into DemoTable1315 values('US');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1315 values('');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1315 values('UK');
Query OK, 1 row affected (0.70 sec)
mysql> insert into DemoTable1315 values('');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1315 values('');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1315 values('AUS');
Query OK, 1 row affected (0.14 sec)

テーブルの中身を確認する

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

mysql> select *from DemoTable1315;

出力結果:

+-------------+
| CountryName |
+-------------+
| US          |
|             |
| UK          |
|             |
|             |
| AUS         |
+-------------+
6 rows in set (0.00 sec)

このように、3つのレコードには空の値が格納されています。

3. 空の値をNULLに変換するクエリ

それでは本題です。WHERE句で空文字列を条件として指定し、SET句でNULLを代入することで、空の値をNULLに変換できます。

mysql> update DemoTable1315 set CountryName=NULL where CountryName='';
Query OK, 3 rows affected (0.16 sec)
Rows matched: 3 Changed: 3 Warnings: 0

変換後のテーブルを確認する

もう一度SELECT文を実行して、正しく変換されたか確認しましょう。

mysql> select *from DemoTable1315;

出力結果:

+-------------+
| CountryName |
+-------------+
| US          |
| NULL        |
| UK          |
| NULL        |
| NULL        |
| AUS         |
+-------------+
6 rows in set (0.00 sec)

すべての空の値がNULLに置き換わっていることが確認できました。

まとめ

空の値をNULLに変換するには、「UPDATE テーブル名 SET カラム名=NULL WHERE カラム名=''」という形式のクエリを使います。SQLにおいて空文字列('')とNULLは別のものとして扱われるため、データクレンジングやデータ整理の場面で、この手法は非常に役立ちます。

  1. MySQLでタイムスタンプを月に変換するクエリの書き方

    タイムスタンプを月に変換する基本構文MySQLでタイムスタンプ(UNIXタイムスタンプ)を月に変換するには、FROM_UNIXTIME()関数とMONTH()関数を組み合わせて使用します。基本的な構文は以下の通りです。select month(from_unixtime(yourColumnName)) from yourTableName;FROM_UNIXTIME()関数がUNIXタイムスタンプを日時形式に変換し、その結果に対してMONTH()関数を適用することで、月の数値(1〜12)を取得できます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> cr

  2. MySQLでNULL値を1として表示・更新する方法

    MySQLでは、テーブル内のNULL値を別の値(たとえば「1」)に置き換えて扱いたい場面があります。この記事では、IFNULL関数とUPDATE文を組み合わせて、NULL値を1に変換する具体的な手順をサンプルコード付きで解説します。 1. サンプルテーブルを作成する まず、動作確認用のテーブルを作成します。 mysql> create table DemoTable1963 ( Counter int ); Query OK, 0 rows affected (0.00 sec) 2. レコードを挿入する INSERT文を使って、NULLを含む複数のレコードを