MySQLで特定の値だけを置換する方法:REPLACE()関数とUPDATE文の使い方
MySQLでテーブル内の特定の値を別の値に置き換えたい場合は、REPLACE()関数を使用します。テーブルのデータを更新する操作になるため、UPDATE文とSET句を組み合わせて実行します。
基本構文
update テーブル名 set 列名=replace(列名, '旧の値', '新の値');
この構文では、指定した列の中に「旧の値」が含まれている行を検索し、その部分を「新の値」に置き換えて更新します。該当する値が含まれていない行は変更されません。
サンプルテーブルの作成
まず、動作確認用のテーブルを作成しましょう。
mysql> create table DemoTable
(
FirstName varchar(100),
CountryName varchar(100)
);
Query OK, 0 rows affected (0.69 sec)テストデータの挿入
INSERTコマンドを使って、いくつかのレコードを挿入します。
mysql> insert into DemoTable values('John','AUS');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Bob','AUS');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Chris','US');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('David','UK');
Query OK, 1 row affected (0.43 sec)
mysql> insert into DemoTable values('Adam','US');
Query OK, 1 row affected (0.09 sec)現在のデータを確認
SELECT文ですべてのレコードを表示します。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+-----------+-------------+ | FirstName | CountryName | +-----------+-------------+ | John | AUS | | Bob | AUS | | Chris | US | | David | UK | | Adam | US | +-----------+-------------+ 5 rows in set (0.00 sec)
特定の値を置換するクエリ
ここでは、「AUS」という値を「US」に置き換えてみます。次のようなクエリを実行します。
mysql> update DemoTable set CountryName=replace(CountryName,'AUS','US'); Query OK, 2 rows affected (0.17 sec) Rows matched: 5 Changed: 2 Warnings: 0
実行結果を見ると、「Rows matched: 5(一致した行:5件)」「Changed: 2(実際に変更された行:2件)」と表示されています。これは、CountryName列に「AUS」が含まれていた2行(JohnとBob)のみが更新されたことを意味します。すでに「US」になっているChrisやAdamの行、まったく異なる値を持つDavidの行は変更されていません。
更新後のデータ確認
もう一度SELECT文を実行して、テーブルの内容を確認してみましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+-----------+-------------+ | FirstName | CountryName | +-----------+-------------+ | John | US | | Bob | US | | Chris | US | | David | UK | | Adam | US | +-----------+-------------+ 5 rows in set (0.00 sec)
「AUS」だった2件が「US」に正しく置き換えられ、他のレコードはそのまま維持されていることがわかります。
まとめ
MySQLで列内の特定の値のみを置換するには、UPDATE文のSET句でREPLACE()関数を呼び出すのが最もシンプルな方法です。WHERE句を併用すれば、さらに条件を絞って更新対象の行を限定することも可能なので、大量データの一部だけを修正したい場合にも活用できます。
-
MySQLのVARCHAR型カラムから最大値を正しく取得する方法
VARCHAR型(文字列型)のカラムに対してそのまま MAX() 関数を使用すると、値は文字列として比較されるため、「8」「901」「10001」のような数値的な大小関係が正しく評価されません。そこで、CAST() を使って値を数値型に変換してから MAX() を適用することで、正確な最大値を取得できます。 1. サンプルテーブルを作成する まず、動作確認用のテーブルを作成しましょう。 mysql> create table DemoTable2030 -> ( -> Value varchar(20) -> ); Query OK, 0 row
-
MySQLで値が「0」の場合に別の列から値を取得する方法
MySQLで値が「0」の場合に別の列から値を取得する方法MySQLでは、IF()関数を使用することで、特定の列の値が「0」だった場合に、別の列の値を代わりに取得できます。条件分岐を1つのクエリ内で簡単に実現できる便利な関数です。IF()関数の基本構文select IF(yourColumnName1=0,yourColumnName2,yourColumnName1) as anyAliasName from yourTableName;この構文では、最初の列の値が「0」であれば2番目の列の値を返し、「0」以外であれば最初の列の値をそのまま返します。サンプルテーブルの作成まず、動作確認用のテー