我尝试从以下位置替换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 和没有它。所有这些变体都不起作用。什么都没有改变!
此外,当我在 PHPMyAdmin 中预运行此查询时("查找和替换"部分(,它正确找到所有包含 href=\"example.com\"> 的文章,但替换字符串向我显示与原始字符串相同的内容。
我的 CMS 还内置了搜索和替换字符串的功能,也无法更改带有反斜杠的字符串。
我完全被这个问题困住了。
您在替换搜索字符串上放置了太多反斜杠,因此找不到该字符串。 双反斜杠在表中存储为一个反斜杠,因此替换字符串时需要使用 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\\"%'
<</div>
div class="one_answers"> 这是您要更新的查询;
UPDATE `articles`
SET `text` = REPLACE(`text`, 'href=\"example.com\"', 'href=\"https://example.com\"')
WHERE `text` LIKE '%href=\\"example.com\\"%'