UPDATE文のWHERE句で特定の条件を満たすデータのみを置換する方法
MySQLで文字列置換を行うには、主に以下の2つの方法があります。
- REPLACE関数
- 正規表現
それぞれの特徴と使用方法を説明します。
概要
REPLACE関数は、指定された文字列を別の文字列に置換する関数です。構文は以下の通りです。
REPLACE(str, old_str, new_str)
str
: 置換対象となる文字列new_str
: 置換後の文字列
例
SELECT REPLACE('This is a test.', 'is', 'was');
このクエリは、'This is a test.'
の中の 'is'
を 'was'
に置換します。結果は 'This was a test.'
となります。
複数回の置換
REPLACE関数は、複数回の置換にも使用できます。
SELECT REPLACE(REPLACE('This is a test.', 'is', 'was'), 'test', 'trial');
正規表現は、より複雑な文字列置換を行う際に使用できます。構文は以下の通りです。
REGEXP_REPLACE(str, pattern, replacement)
pattern
: 置換対象となる部分文字列のパターンreplacement
: 置換後の文字列
SELECT REGEXP_REPLACE('This is a test.', '[aeiou]', '*');
大文字と小文字
正規表現では、大文字と小文字を区別できます。
SELECT REGEXP_REPLACE('This is a test.', 'is', 'WAS');
置換後の文字列に特殊文字を含めるには、エスケープする必要があります。
SELECT REGEXP_REPLACE('This is a test.', 'test', '\.');
MySQLで文字列置換を行うには、REPLACE関数と正規表現の2つの方法があります。それぞれの特徴を理解して、適切な方法を選択してください。
-- テーブル作成
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(255)
);
-- データ挿入
INSERT INTO users (id, name) VALUES (1, 'John Doe');
INSERT INTO users (id, name) VALUES (2, 'Jane Doe');
-- 置換
UPDATE users SET name = REPLACE(name, 'Doe', 'Smith');
-- 結果確認
SELECT * FROM users;
このコードは、users
テーブルの name
カラムの 'Doe'
を 'Smith'
に置換します。
-- テーブル作成
CREATE TABLE articles (
id INT PRIMARY KEY,
title VARCHAR(255)
);
-- データ挿入
INSERT INTO articles (id, title)
VALUES (1, 'This is a test.');
INSERT INTO articles (id, title)
VALUES (2, 'This is another test.');
-- 置換
UPDATE articles SET title = REGEXP_REPLACE(title, '[aeiou]', '*');
-- 結果確認
SELECT * FROM articles;
このコードは、articles
テーブルの title
カラムのすべての母音を '*'
に置換します。
CASE式を使用して、条件分岐による置換を行うことができます。
SELECT
CASE
WHEN name LIKE '%Doe%' THEN REPLACE(name, 'Doe', 'Smith')
ELSE name
END AS new_name
FROM users;
このクエリは、users
テーブルの name
カラムの 'Doe'
を 'Smith'
に置換します。ただし、name
カラムに 'Doe'
が含まれていない場合は、元の値のままになります。
UPDATE文のWHERE句を使用して、特定の条件を満たすデータのみを置換することができます。
UPDATE users SET name = REPLACE(name, 'Doe', 'Smith')
WHERE name LIKE '%Doe%';
mysql replace