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