MySQLで文字列の先頭の特定文字を検索・置換する方法をわかりやすく解説
MySQLでは、INSERT()関数を使うことで、文字列の先頭にある特定の文字を検索して別の文字列に置き換えることができます。この記事では、実際にテーブルを作成し、先頭が「90」で始まるレコードだけを置き換える手順を順番に解説します。
INSERT()関数とは
INSERT()関数は、指定した位置から指定した文字数分の文字列を、新しい文字列に置き換える関数です。構文は以下のとおりです。
INSERT(対象文字列, 開始位置, 置換する文字数, 挿入する文字列)
サンプルテーブルの作成
まず、CREATE TABLE文でテーブルを作成します。
mysql> create table DemoTable
-> (
-> ZipCode varchar(200)
-> );
Query OK, 0 rows affected (0.47 sec)
テストデータの挿入
次に、INSERT文を使っていくつかのレコードを挿入します。
mysql> insert into DemoTable values('9030');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('3902');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('9083');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values('9089');
Query OK, 1 row affected (0.13 sec)登録データの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
出力結果
+---------+
| ZipCode |
+---------+
| 9030 |
| 3902 |
| 9083 |
| 9089 |
+---------+
4 rows in set (0.00 sec)
先頭の文字を検索して置き換えるUPDATE文
ここからが本題です。次のクエリを実行すると、文字列の先頭にある文字を検索して置き換えられます。この例では、「ZipCode」が「90」で始まるレコードのみを対象に処理を行います。
mysql> update DemoTable set ZipCode=INSERT(ZipCode, 1, 2, 'Country-AUS-')
-> where ZipCode LIKE '90%';
Query OK, 3 rows affected (0.26 sec)
Rows matched: 3 Changed: 3 Warnings: 0
ポイントは以下の2つです。
- INSERT(ZipCode, 1, 2, 'Country-AUS-'): 先頭(位置1)から2文字を「Country-AUS-」に置き換えます。
- WHERE ZipCode LIKE '90%': 「90」で始まるレコードのみを更新対象に限定します。
更新後の確認
もう一度テーブルの内容を確認しましょう。
mysql> select *from DemoTable;
出力結果
+----------------+
| ZipCode |
+----------------+
| Country-AUS-30 |
| 3902 |
| Country-AUS-83 |
| Country-AUS-89 |
+----------------+
4 rows in set (0.00 sec)
まとめ
このように、INSERT()関数とLIKE句を組み合わせることで、MySQLで文字列の先頭にある特定の文字だけを効率的に検索・置換できます。「90」で始まる3件のレコードだけが「Country-AUS-」に書き換わり、「3902」のような対象外のレコードはそのまま維持されていることが確認できます。郵便番号や国コードなど、先頭部分の形式を一括変換したい場合に非常に便利なテクニックなので、ぜひ活用してください。
-
MySQLでREGEXP(正規表現)を使って特定の単語を検索する方法
MySQLでは、REGEXP演算子(正規表現)を使用することで、文字列の中から特定の単語やパターンを柔軟に検索できます。LIKE句よりも複雑な条件指定が可能なため、部分一致や文中の任意の位置にある単語を正確に探したい場合に非常に便利です。 サンプルテーブルの作成 まず、検索対象となるテーブルを作成しましょう。 mysql> create table DemoTable -> ( -> Title varchar(255) -> ); Query OK, 0 rows affected (1.82 sec) レコードの挿入 次に、INSERTコマン
-
MySQLで文字列の最初に出現する語のみを置換する方法
REGEXP_REPLACE()で最初の出現箇所だけを置換する文字列内に同じ単語が複数回登場する場合、そのうち最初の1回だけを別の単語に置き換えたいことがあります。MySQLではREGEXP_REPLACE()関数を使うことで、この要件を簡単に実現できます。なお、この関数はMySQL 8.0以降で利用可能です。例として、次のような文字列を考えてみましょう。This is my first MySQL query. This is the first tutorial. I am learning for the first time.この文字列には「first」という単語が3回出現しますが、最