我尝试从以下位置替换 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\\\\"%'
当然,我尝试了不同的变体和组合,包括转义和未转义的 backslaches,带子句 WHERE 和不带子句。这些所有变体都不起作用。什么都没有改变!
此外,当我在 PHPMyAdmin(“查找和替换”部分)中预运行此查询时,它正确地找到了所有包含 href=\"example.com\" 的文章,但替换字符串显示与原始字符串相同的内容。
我的 CMS 也有搜索和替换字符串的内置功能,也不能用反斜杠更改字符串。
我完全被这个问题困住了。
最佳答案
您在替换搜索字符串上放置了太多反斜杠,因此找不到该字符串。双反斜杠在表中存储为一个反斜杠,因此在替换字符串时需要使用 2 个反斜杠,在 where 子句中进行搜索时需要使用 4 个反斜杠。 看这里的演示; 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\\\\"%'
关于mysql - 如何在 MySQL 中替换包含反斜杠的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49846911/