Mysql查询字符串替换[重复]

Posted

技术标签:

【中文标题】Mysql查询字符串替换[重复]【英文标题】:Mysql query string replace [duplicate] 【发布时间】:2012-07-23 21:28:33 【问题描述】:

可能重复:How to do a regular expression replace in mysql?

我尝试替换以 '?campaign=qwertysomerandomtext"' 开头的字符串并将其替换为 '"'。

我尝试为此使用通配符,例如 '?campaign=%_" 并替换为 '"'。但发现通配符不适用于替换。

还有其他方法可以解决这个问题吗?我考虑过使用子字符串 from to 之类的东西。但到目前为止没有发现任何对我有用的东西。

希望有人能帮我解决这个问题。

问候 bnz

【问题讨论】:

有没有一种方法可以对表格进行预处理? (update x set col = " where col like '?campaign=%') @lqez,没有重复,因为简单的替换不需要正则表达式。 @MvG,天哪,确实如此,我的错。很好的答案。 【参考方案1】:

我尝试替换以 '?campaign=qwertysomerandomtext"' 并将其替换为 '"'

从字面上理解这个请求,它变成了

UPDATE t SET s = '"' WHERE s = '?campaign=qwertysomerandomtext"'

我已从您的问题中复制了双引号,位于搜索字符串的末尾和替换字符串内。如果这是一个错误,请调整。

如果随机文本是占位符并且应该是通配符,如第二段所述,则使用

UPDATE t SET s = '"' WHERE s = '?campaign=%_"'

如果您要替换的文本位于其他字符串的末尾,而不是您询问的开头,那么您可以这样做

UPDATE t SET s = LEFT(s, LOCATE('?campaign=', s)) WHERE s = '?campaign=%_"'

这会识别广告系列内容的位置,并删除该位置以及之后的所有内容。

不需要正则表达式。一般来说,你可以通过结合LOCATELEFTRIGHTSUBSTRCONCAT来实现很多目标。

【讨论】:

以上是关于Mysql查询字符串替换[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL 中运行更新查询并替换匹配的字符串

MySql查询在Select中用空字符串替换NULL

SQL更新和替换子字符串[重复]

SQL更新和替换子字符串[重复]

MySQL字符串的拼接截取替换查找位置

Hive 查询仅替换第一次出现的子字符串