如何在MySQL Workbench中替换包含反斜杠与单引号的字符串
MySQL反斜杠加单引号组合字符串清洗解决方案
问题原因
你之前的REPLACE操作未生效,核心是你只匹配了单引号本身,但你要处理的目标是反斜杠+单引号的组合字符,原有逻辑完全没有匹配到反斜杠,所以字符串不会发生变化。
正确操作步骤
1. 检索目标记录
如果你的MySQL实例没有开启ANSI_QUOTES SQL模式,推荐用双引号包裹字符串减少转义复杂度,检索语句如下:
SELECT columnname FROM tablename WHERE columnname LIKE "%\\'%";
如果习惯全用单引号包裹,需要多一层单引号转义,写法如下:
SELECT columnname FROM tablename WHERE columnname LIKE '%\\\''%';
注:要匹配存储在字段中的单个字面量反斜杠,需要写2个连续的反斜杠:因为MySQL解析字符串时,会先将
\\转义为单个\再做匹配。
2. 验证REPLACE效果
你要做的是把\+'的组合替换为单个',正确的验证语句如下:
SELECT REPLACE(columnname, "\\'", "'") FROM tablename WHERE columnname LIKE "%\\'%";
用单引号全包裹的写法:
SELECT REPLACE(columnname, '\\\'', '\'') FROM tablename WHERE columnname LIKE '%\\\''%';
3. 执行更新操作
确认替换效果符合预期后,执行UPDATE语句完成清洗:
UPDATE tablename SET columnname = REPLACE(columnname, "\\'", "'") WHERE columnname LIKE "%\\'%";
转义字符常见疑问解答
在MySQL的REPLACE函数(以及所有普通字符串场景)中,两种表示单引号的方式都是合法的:
- 如果字符串用单引号包裹,你可以用两个连续单引号
''表示单个字面量单引号,也可以用反斜杠转义的\'表示 - 如果字符串用双引号包裹,单引号不需要转义,直接写
'即可
需要注意:反斜杠本身是全局转义符,不管在哪种引号包裹的场景下,要表示字面量的反斜杠,都必须写两个连续的反斜杠\\。
内容的提问来源于stack exchange,提问作者Nadhirah21
相关产品推荐
相关产品推荐

