MySQLでREPLACE関数を使いこなす|文字列置換の実践テクニック

2025年5月8日

とてぃです。今回はMySQLのREPLACE関数を使った文字列置換の実践的な方法を、具体例とともに解説します。大量データの一括修正や動的な値変更に役立つテクニックです。

REPLACE関数の基本構文

REPLACE(対象カラム, 置換前の文字列, 置換後の文字列)

この関数は文字列の検索・置換を一度に行い、更新クエリやSELECT句でも使用可能です。

実践例:商品テーブルの修正

カラム名 元の値 置換後
shohin カラフルな模様のシャツ 水玉模様のシャツ
UPDATE 商品テーブル 
SET shohin = REPLACE(shohin, 'カラフルな模様', '水玉模様')
WHERE shohin LIKE '%カラフルな模様%';

WHERE句を追加することで、該当する行のみを効率的に更新できます。

応用テクニック

1. 複数項目を同時置換

UPDATE products 
SET 
    name = REPLACE(name, '旧', '新'),
    description = REPLACE(description, 'old', 'new')
WHERE category = '衣類';

2. ネストした置換

SELECT 
    REPLACE(
        REPLACE(text, '[会社名]', '株式会社サンプル'),
        '[日付]', CURDATE()
    ) AS formatted_text
FROM documents;

3. 部分一致と組み合わせ

UPDATE users 
SET email = REPLACE(email, '@old-domain.com', '@new-domain.com')
WHERE email LIKE '%@old-domain.com';

注意点とベストプラクティス

  • バックアップ必須:UPDATE実行前には必ずデータのバックアップを
  • 大文字小文字の区別:デフォルトでcase-insensitive(照合順序に依存)
  • パフォーマンス:大量データの場合はインデックスを確認
  • エスケープ処理:特殊文字(%や_)がある場合は適切にエスケープ

REPLACE関数 vs REPLACE文

REPLACE関数 REPLACE文
用途 文字列置換 行の置換(UPSERT)
構文 SELECT/UPDATE内で使用 独立したDML文
UPDATE … SET col = REPLACE(col, ‘a’, ‘b’) REPLACE INTO table … VALUES(…)

まとめ

  • REPLACE関数は部分的な文字列修正に最適
  • WHERE句との組み合わせで効率的に更新
  • 複雑な置換は複数回ネストして使用可能
  • 実行前のバックアップとテストが重要

MySQLの公式ドキュメントも参考にしながら、安全かつ効果的にREPLACE関数を活用しましょう。
最後まで読んでいただきありがとうございました。

日常

Posted by xxoruioxx