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

标签 mysql search replace backslash

我尝试从以下位置替换 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/

相关文章:

mysql - 如何仅在 MYSQL 数据库中查找和替换特定字符串的字符串

javascript - 重新排序关联模型 laravel

php - MySQL-根据另一个表的列数从一个表获取记录

mysql - 确定子表的类型

search - IntelliJ 文件掩码不适用于简单的排除文件模式!为什么?

c# - 替换 C# 中给定字符/字节数组中所有出现的字符串

mysql - 一起使用 GROUP BY 和 ORDER BY 来检索最新消息

java - 搜索数组列表中的特定对象并打印数组列表中的所有对象

Python字典搜索未找到给定字符串的结果

python - 如何使用单个 re.sub 删除数字之间的多个空格