tin*_*ime 12 mysql sql replace
我正在尝试编写SQL更新以使用新字符串替换特定的xml节点:
UPDATE table
SET Configuration = REPLACE(Configuration,
"<tag>%%ANY_VALUE%%</tag>"
"<tag>NEW_DATA</tag>");
Run Code Online (Sandbox Code Playgroud)
以便
<root><tag>SDADAS</tag></root>
变
<root><tag>NEW_DATA</tag></root>
这种类型的请求是否缺少语法?
Bil*_*win 16
更新: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)
)
Run Code Online (Sandbox Code Playgroud)
但是,这对于多次出现的情况不起作用<tag>.
您可能必须将行提取回应用程序,使用您喜欢的语言执行字符串替换,然后将行发回.换句话说,每行三步过程.
| 归档时间: |
|
| 查看次数: |
16081 次 |
| 最近记录: |