MySQLで文字列の一部(@以降のドメイン名)を置き換える方法
MySQLでは、REPLACE()関数を使うことで、文字列の一部を簡単に別の文字列へ置き換えることができます。たとえば、メールアドレスのドメイン部分(@以降)を一括で変更したい場合に非常に便利です。ここでは、実際にテーブルを作成し、メールアドレスのドメインを置き換える手順を解説します。
1. テーブルの作成
まず、サンプル用のテーブルを作成します。
mysql> create table DemoTable
-> (
-> EmailId varchar(30)
-> );
Query OK, 0 rows affected (0.53 sec)
2. レコードの挿入
INSERTコマンドを使って、テーブルにいくつかのレコードを追加します。
mysql> insert into DemoTable values('John123@example.com');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('John123@gmail.com');
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable values('John123@yahoo.com');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('John123@example.com');
Query OK, 1 row affected (0.10 sec)
3. テーブルの内容を確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下のとおりです。
+---------------------+ | EmailId | +---------------------+ | John123@example.com | | John123@gmail.com | | John123@yahoo.com | | John123@example.com | +---------------------+ 4 rows in set (0.00 sec)
4. REPLACE()関数で文字列を置き換える
次に、REPLACE()関数を使用して、「example.com」のドメインを持つメールアドレスを「gmail.com」に置き換えます。
mysql> update DemoTable
-> set EmailId=replace(EmailId,'John123@example.com','John123@gmail.com');
Query OK, 2 rows affected (0.16 sec)
Rows matched: 4 Changed: 2 Warnings: 0
このクエリでは、該当する2件のレコードが更新されました(Rows matched: 4 / Changed: 2)。
5. 更新後の確認
もう一度テーブルのレコードを確認しましょう。
mysql> select *from DemoTable;
実行結果は以下のとおりです。
+-------------------+ | EmailId | +-------------------+ | John123@gmail.com | | John123@gmail.com | | John123@yahoo.com | | John123@gmail.com | +-------------------+ 4 rows in set (0.00 sec)
まとめ
UPDATE文とREPLACE()関数を組み合わせることで、MySQL上の文字列データの一部を効率的に置き換えられます。なお、特定のドメインだけを対象にしたい場合は、WHERE句で条件を絞り込むことも可能です。例:WHERE EmailId LIKE '%@example.com' のように指定すると、より安全に目的のレコードだけを更新できます。
-
MySQLのSUBSTRING_INDEX()関数で文字列を分割する方法を徹底解説
MySQLで文字列を特定の区切り文字で分割したい場合、SUBSTRING_INDEX() 関数が非常に便利です。この記事では、サンプルテーブルの作成から、氏名を「名」と「姓」に分割するクエリの実行まで、具体的な手順をわかりやすく解説します。 SUBSTRING_INDEX()関数とは SUBSTRING_INDEX(str, delim, count) は、区切り文字 delim の count 回目の出現位置を基準に部分文字列を返す関数です。count が正の値の場合は左側から、負の値の場合は右側から数えます。この特性を組み合わせることで、柔軟に文字列を分割できます。 サンプルテーブルの作成
-
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回出現しますが、最