使用通配符替换的MySQL

我正在尝试编写SQL更新,以使用新字符串替换特定的xml节点:

UPDATE table

SET Configuration = REPLACE(Configuration,

"<tag>%%ANY_VALUE%%</tag>"

"<tag>NEW_DATA</tag>");

以便

<root><tag>SDADAS</tag></root>

变成

<root><tag>NEW_DATA</tag></root>

这种类型的请求缺少语法吗?

回答:

更新:MySQL

8.0具有功能REGEX_REPLACE()。

以下是我2014年的回答,该回答仍然适用于8.0之前的任何版本的MySQL:


REPLACE()不支持通配符,模式,正则表达式等。REPLACE()仅将一个常量字符串替换为另一个常量字符串。

您可以尝试一些复杂的操作,以选择字符串的开头部分和字符串的结尾部分:

UPDATE table

SET Configuration = CONCAT(

SUBSTR(Configuration, 1, LOCATE('<tag>', Configuration)+4),

NEW_DATA,

SUBSTR(Configuration, LOCATE('</tag>', Configuration)

)

但这不适用于您多次出现的情况<tag>

您可能必须将行取回应用程序,使用您喜欢的语言执行字符串替换,然后将行发回。换句话说,每一行分三步进行。

以上是 使用通配符替换的MySQL 的全部内容, 来源链接: utcz.com/qa/426822.html

回到顶部