ID非公開さん
2022/1/1 22:43
1回答
MySQLで「REPLACE」が効かないのですが、原因はなんだと思われますか?
MySQLで「REPLACE」が効かないのですが、原因はなんだと思われますか? 以下、CREATE、INSERTに対しUPDATEすると「0行を変更しました」となり、SELECTしてもやはり「__TEST__」の文字列は残ってしまうのです。 ──────────────── CREATE TABLE `messages` ( `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `message` varchar(1000) CHARACTER SET utf8mb4 NOT NULL, PRIMARY KEY (`ID`), FULLTEXT KEY `full_messages_01` (`message`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; INSERT INTO `messages` (`ID`, `message`) VALUES (1, 'こんにちは__TEST__'), (2, 'さようなら__TEST__'); ──────────────── UPDATE `messages` SET `message` = REPLACE(`message`, "/__TEST__/", ""); ↓ 「0 行変更しました。」 ──────────────── SELECT * FROM `messages`; ↓ ID message 1 こんにちは__TEST__ 2 さようなら__TEST__ ────────────────
改めてですが、「__TEST__」を削除した次の結果を求めています ──────────────── SELECT * FROM `messages`; ↓ ID message 1 こんにちは 2 さようなら ────────────────
MySQL・36閲覧・25
ベストアンサー
元の文字列に/は含まれてないので一致しません。 今は試せないけど、 SET `message` = REPLACE(`message`, "__TEST__", "" で出来るかと。
ID非公開さん
質問者2022/1/2 7:33
あっ…そーゆーことでしたか。ネットで検索してその書き方だったので、てっきり正規表現かなんかなの/だろう思ってました。ご回答ありがとうございました。
質問者からのお礼コメント
どうもありがとうございました!
お礼日時:1/2 7:33