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

MySQLで特定テーブルの特定カラムに含まれるNULL値を一括置換する方法

MySQLで、特定のテーブル内の特定カラム(フィールド)に含まれるすべてのNULL値を別の値に置き換えたい場合は、UPDATE文IS NULL条件を組み合わせて使用します。NULLは通常の比較演算子(=など)では判定できないため、「IS NULL」を使って明示的に条件指定するのがポイントです。

基本構文

UPDATE yourTableName SET yourColumnName='yourValue' WHERE yourColumnName IS NULL;

それでは、実際にテーブルを作成しながら動作を確認してみましょう。

1. テーブルの作成

まず、従業員情報を格納するテーブルを作成します。

mysql> create table Employee_Information_Table
    -> (
    -> Id int NOT NULL AUTO_INCREMENT,
    -> Name varchar(20),
    -> Salary int,
    -> PRIMARY KEY(Id)
    -> );
Query OK, 0 rows affected (0.59 sec)

2. サンプルデータの挿入

次に、INSERT文を使ってSalaryカラムがNULLのレコードを複数件追加します。

mysql> insert into Employee_Information_Table(Name,Salary) values('John',NULL);
Query OK, 1 row affected (0.13 sec)

mysql> insert into Employee_Information_Table(Name,Salary) values('Carol',NULL);
Query OK, 1 row affected (0.17 sec)

mysql> insert into Employee_Information_Table(Name,Salary) values('Bob',NULL);
Query OK, 1 row affected (0.10 sec)

mysql> insert into Employee_Information_Table(Name,Salary) values('David',NULL);
Query OK, 1 row affected (0.17 sec)

mysql> insert into Employee_Information_Table(Name,Salary) values('Robert',NULL);
Query OK, 1 row affected (0.12 sec)

mysql> insert into Employee_Information_Table(Name,Salary) values('Mike',NULL);
Query OK, 1 row affected (0.24 sec)

mysql> insert into Employee_Information_Table(Name,Salary) values('Sam',NULL);
Query OK, 1 row affected (0.17 sec)

3. 現在のデータを確認

SELECT文で全レコードを表示すると、SalaryカラムがすべてNULLになっていることがわかります。

mysql> select *from Employee_Information_Table;

実行結果:

+----+--------+--------+
| Id | Name   | Salary |
+----+--------+--------+
|  1 | John   |   NULL |
|  2 | Carol  |   NULL |
|  3 | Bob    |   NULL |
|  4 | David  |   NULL |
|  5 | Robert |   NULL |
|  6 | Mike   |   NULL |
|  7 | Sam    |   NULL |
+----+--------+--------+
7 rows in set (0.00 sec)

4. NULL値を一括置換するUPDATE文

ここで本題のクエリです。WHERE句に「IS NULL」を指定することで、SalaryカラムがNULLのレコードだけをまとめて更新できます。

mysql> update Employee_Information_Table
   -> set Salary=45500 where Salary IS NULL;
Query OK, 7 rows affected (0.23 sec)
Rows matched: 7 Changed: 7 Warnings: 0

5. 更新後のデータを確認

もう一度SELECT文を実行してテーブルの中身を確認すると、すべてのNULL値が45500に置き換わっていることが確認できます。

mysql> select *from Employee_Information_Table;

実行結果:

+----+--------+--------+
| Id | Name   | Salary |
+----+--------+--------+
|  1 | John   |  45500 |
|  2 | Carol  |  45500 |
|  3 | Bob    |  45500 |
|  4 | David  |  45500 |
|  5 | Robert |  45500 |
|  6 | Mike   |  45500 |
|  7 | Sam    |  45500 |
+----+--------+--------+
7 rows in set (0.00 sec)

補足:COALESCE関数を使う方法

データ取得時にNULLだけ別の値として表示したい場合は、SELECT側でCOALESCE関数を使うのも有効です。こちらは元のデータを変更せずに表示だけを切り替えられるため、用途に応じて使い分けるとよいでしょう。

mysql> SELECT Id, Name, COALESCE(Salary, 0) AS Salary FROM Employee_Information_Table;
  1. MySQLでテーブル内のNULLまたはNULL以外のフィールドを一括更新する方法

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

  2. MySQLで列内の特定の文字を置き換える方法|REPLACE()関数とUPDATE文の使い方

    MySQLである列に含まれる特定の文字を別の文字に置き換えたい場合、REPLACE() 関数と UPDATE 文を組み合わせることで簡単に実現できます。この記事では、実際のサンプルコードを交えながら、具体的な手順をわかりやすく解説します。1. テーブルを作成するまずは動作確認用のサンプルテーブルを作成しましょう。ここでは「Code」という varchar 型のカラムを持つテーブルを定義します。mysql> create table DemoTable1899 ( Code varchar(20) ); Query OK, 0 rows affected (0.00