如何在MySQL中替换包含反斜杠的字符串

时间:2018-04-15 21:21:20

标签: mysql search replace backslash

我尝试从以下位置替换MySQL表中的字符串:

org.springframework.boot:spring-boot-starter-jdbc

href=\"example.com\"

我知道正确的查询如何搜索和更新字符串,它是完美的,直到我尝试用反斜杠更改字符串。什么都行不通:

href=\"https://example.com\"

当然,我尝试了不同的变种和组合与转义和未转义的后退,使用子句WHERE和没有它。这些所有变体都不起作用。什么都没有变化!

此外,当我在PHPMyAdmin(“查找和替换”部分)中预先运行此查询时,它正确查找包含 href = \“example.com \”的所有文章,但替换了字符串显示与原始字符串相同的内容。

我的CMS也有内置的搜索和替换字符串功能,也无法使用反斜杠更改字符串。

我完全坚持这个问题。

2 个答案:

答案 0 :(得分:1)

这是您要更新的查询;

UPDATE `articles` 
SET `text` = REPLACE(`text`, 'href=\\"example.com\\"', 'href=\\"https://example.com\\"') 
WHERE `text` LIKE '%href=\\\\"example.com\\\\"%'

答案 1 :(得分:1)

您在替换搜索字符串上放了太多反斜杠,因此找不到该字符串。双反斜杠在表中存储为一个反斜杠,因此在替换字符串时需要使用2x反斜杠,在where子句中执行搜索时需要使用4x反斜杠。 看这里的演示; http://sqlfiddle.com/#!9/c1e0eb/1

update articles
set text =
REPLACE(`text`, 'href=\\"example.com\\"', 'href=\\"https://example.com\\"')
where text like '%href=\\\\"example.com\\\\"%'