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

MySQLのCOALESCE()関数を使ってNULL値を別の値に置き換える方法

MySQLのCOALESCE()関数は、渡された引数の中から最初にNULLではない値を返す関数です。この特性を活用することで、テーブル内のNULL値を任意の値で置き換えることができます。

サンプルデータの確認

ここでは「Employee」テーブルを使用します。IDが5と6のレコードは、Salary(給与)カラムがNULLになっています。

mysql> Select * from Employee;
+----+--------+--------+
| ID | Name   | Salary |
+----+--------+--------+
| 1  | Gaurav | 50000  |
| 2  | Rahul  | 20000  |
| 3  | Advik  | 25000  |
| 4  | Aarav  | 65000  |
| 5  | Ram    | NULL   |
| 6  | Mohan  | NULL   |
+----+--------+--------+
6 rows in set (0.00 sec)

COALESCE()関数とUPDATE文でNULLを置き換える

次のように、COALESCE()関数をUPDATE文およびWHERE句と組み合わせて使用すると、NULLの場所に新しい値を挿入できます。

mysql> Update Employee set Salary = COALESCE(Salary,20000) where Id = 5;
Query OK, 1 row affected (0.09 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> Update Employee set Salary = COALESCE(Salary,30000) where Id = 6;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1 Changed: 1 Warnings: 0

動作の仕組み

ID = 5のレコードでは、Salaryの現在値がNULLであるため、COALESCE(Salary, 20000)は2番目の引数である20000を返します。一方、すでにSalaryに値が入っている場合は既存の値がそのまま返されるため、NULL以外のデータが誤って上書きされることはありません。これにより、安全にNULLだけを埋める処理が可能になります。

更新後の結果確認

mysql> Select * from Employee;
+----+--------+--------+
| ID | Name   | Salary |
+----+--------+--------+
| 1  | Gaurav | 50000  |
| 2  | Rahul  | 20000  |
| 3  | Advik  | 25000  |
| 4  | Aarav  | 65000  |
| 5  | Ram    | 20000  |
| 6  | Mohan  | 30000  |
+----+--------+--------+
6 rows in set (0.00 sec)

実行結果を見ると、ID = 5のRamには20000が、ID = 6のMohanには30000が挿入され、NULLだった部分が適切な値で埋められていることがわかります。この手法は、デフォルト値の設定やデータクレンジングなど、NULL値を含むデータを整えたい場面で非常に便利です。

  1. MySQLでテーブルのカラム名(列名)を確認する方法|SHOW COLUMNSとinformation_schemaの使い方

    MySQLでテーブルに含まれるカラム名(列名)を調べたい場合、SHOW COLUMNS文またはINFORMATION_SCHEMA.COLUMNSテーブルを使用する方法が一般的です。この記事では、両方の方法をサンプルコードとともにわかりやすく解説します。検証用テーブルの作成まず、動作確認用として以下のようなサンプルテーブルを作成します。mysql> create table DemoTable603 ( ClientId int NOT NULL AUTO_INCREMENT, ClientName varchar(100), Clien

  2. Javaを使ってDATE型の値をMySQLカラムに挿入する方法【PreparedStatement活用】

    はじめに JavaからMySQLのDATE型カラムに日付データを挿入したい場合、PreparedStatementを使用するのが最も安全で推奨される方法です。SQLインジェクション対策にもなり、日付型の変換もスムーズに行えます。 本記事では、Javaプログラムから現在の日付をMySQLテーブルに挿入する手順を、サンプルコード付きでわかりやすく解説します。 1. サンプルテーブルの作成 まず、DATE型のカラム「ArrivalDate」を含むテーブルを作成します。以下はMySQLでの作成例です。 mysql> create table DemoTable( PassengerId