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

cu6pst1q  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(921)

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

href=\"example.com\"

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

我知道正确的查询如何搜索和更新字符串,它是完美的作品,直到我试图改变字符串与反斜杠。没有什么不起作用:

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

当然,我尝试了不同的变体和组合,包括转义和不转义的后空位,以及从句where和without。所有这些变体都不起作用。什么都没变!
另外,当我在phpmyadmin中预运行这个查询(“查找和替换”部分)时,它会正确地查找所有包含href=\“example.com\”的文章,但替换的字符串显示的内容与原始字符串相同。
我的cms也有搜索和替换字符串的内置功能,也不能用反斜杠改变字符串。
我完全被这个问题困住了。

ltskdhd1

ltskdhd11#

替换搜索字符串上的反斜杠太多,因此找不到该字符串。双反斜杠作为一个反斜杠存储在表中,因此在替换字符串时需要使用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\\\\"%'
bkkx9g8r

bkkx9g8r2#

这是您要更新的查询;

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

相关问题