MySQLでレコードのリストから特定の値を検索して置換する方法
MySQLでは、カンマ区切りで保存された文字列の中から特定の値を検索し、別の値に置き換えることができます。本記事では、SUBSTRING_INDEX() 関数と CONCAT() 関数を組み合わせたUPDATE文を使って、名前のリストから特定のレコードを置換する手順を解説します。
テーブルの作成
まず、サンプル用のテーブルを作成します。
mysql> create table DemoTable
-> (
-> ListOfName text
-> );
Query OK, 0 rows affected (0.66 sec)
レコードの挿入
INSERTコマンドを使用して、カンマ区切りの名前リストを含むレコードをテーブルに挿入します。
mysql> insert into DemoTable values('Carol,Sam,John,David,Bob,Mike,Robert,John,Chris,James,Jace');
Query OK, 1 row affected (0.13 sec)レコードの確認
SELECT文でテーブル内のすべてのレコードを表示します。
mysql> select *from DemoTable;
以下のような出力が得られます。
+------------------------------------------------------------+
| ListOfName |
+------------------------------------------------------------+
| Carol,Sam,John,David,Bob,Mike,Robert,John,Chris,James,Jace |
+------------------------------------------------------------+
1 row in set (0.00 sec)
検索と置換を行うクエリ
リスト内の2番目の「John」を「Adam」に置き換えるクエリは次のとおりです。
mysql> update DemoTable
-> set ListOfName=
-> concat(substring_index(ListOfName,'John',2) ,'Adam', SUBSTRING_INDEX(ListOfName, 'John', -1));
Query OK, 1 row affected (0.37 sec)
Rows matched: 1 Changed: 1 Warnings: 0
仕組みのポイント
SUBSTRING_INDEX(ListOfName,'John',2) は、区切り文字「John」が2回出現するまでの部分文字列を返します。一方、SUBSTRING_INDEX(ListOfName, 'John', -1) は、最後の「John」以降の部分文字列を取得します。この2つの文字列の間に、CONCAT() 関数で新しい値「Adam」を連結することで、指定した位置の値だけを正確に置き換えられます。
結果の確認
もう一度テーブルのレコードを確認してみましょう。
mysql> select *from DemoTable;
実行結果は以下のとおりです。2番目の「John」が「Adam」に置き換わっていることがわかります。
+------------------------------------------------------------+
| ListOfName |
+------------------------------------------------------------+
| Carol,Sam,John,David,Bob,Mike,Robert,Adam,Chris,James,Jace |
+------------------------------------------------------------+
1 row in set (0.00 sec)
-
MySQLでドメインレコードと検索ボリュームから人気ドメインを抽出する方法
MySQLのテーブルに保存されたURLやドメイン名、検索回数などのデータから、検索ボリュームが最も高い人気ドメインを特定したいケースは多くあります。このような場合、GROUP BY句とORDER BY句を組み合わせて使用することで、簡単に集計・並べ替えが可能です。この記事では、実際にテーブルを作成し、サンプルデータを挿入して、人気ドメインを抽出するクエリの手順を詳しく解説します。1. サンプルテーブルの作成まず、URL・ドメイン名・検索回数を格納するテーブルを作成します。mysql> create table DemoTable-> (-> URL varchar(40),-
-
MySQLでURLレコードの一部を検索して置き換える方法
MySQLでURLなどの文字列レコードの一部を検索して置き換えたい場合、最もシンプルな方法はREPLACE()関数を使うことです。この記事では、実際のサンプルを使いながら、URLの一部を一括置換する手順をわかりやすく解説します。1. サンプルテーブルの作成まず、URLを格納するためのテーブルを作成します。mysql> create table DemoTable2025 -> ( -> URL text -> );Query OK, 0 rows affected (0.88 sec)2. テストデータの挿入次に、INSERTコマンドを使ってサンプルレ