みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

正規表現を使って前方一致置換は可能でしょうか?

table a に以下のレコードが3件あるとします。

id| name
1 | 1-6-104-1
2 | 1-6-104-2
3 | 2-1-6-104

この状態で、1-6-104の部分だけを1-6-103へ置換し、
以下のようにUPDATEしたいのですが1つのSQLで可能でしょうか?

id| name
1 | 1-6-103-1
2 | 1-6-103-2
3 | 2-1-6-104

MySQLのバージョンは5.1です。よろしくお願いします。

投稿日時 - 2010-01-07 18:28:05

QNo.5575230

困ってます

質問者が選んだベストアンサー

replace関数を使えばいいのでは?

update a
set name=replace(name,'1-6-104','1-6-103')
where 検索条件

投稿日時 - 2010-01-07 23:30:42

お礼

ありがとうございます。
ただ、やはり先頭一致ができないので、
3番目のレコードまで置換されてしまいます・・(汗)

投稿日時 - 2010-01-08 12:39:21

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

MySQLの正規表現は置換を前提としていません。
WHEREでは正規表現をつかい、置換にはLEFTやMID、CONCATなどを
つかって無理やりやるといいかもしれません

投稿日時 - 2010-01-07 20:48:43

お礼

いつも、ありがとうございます。
テンプテーブルとサブクエリとLIKE分(先頭一致)で解決することにしますね。

投稿日時 - 2010-01-08 13:00:49

あなたにオススメの質問