我有一个带有文章表的 MySQL DB (5.7.18)。每篇文章都有一个摘要作为abstract列中的 HTML 字符串。由于 HTML 编辑器中的错误,许多 HTML 标签被令人讨厌的样式污染,如下所示:
<h1 style="color: rgb(0, 0, 0);">Wonderful Abstract</h1>
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我正在尝试以下查询:
UPDATE `article` SET `abstract`=REPLACE(`abstract`,' style="color: rgb(0, 0, 0);"','')
Run Code Online (Sandbox Code Playgroud)
不幸的是,显示了一个语法错误:
#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“style="color: rgb(0, 0, 0))”附近使用正确的语法
如果删除分号,它可以正常工作:
UPDATE `article` SET `abstract`=REPLACE(`abstract`,' style="color: rgb(0, 0, 0)"','');
Run Code Online (Sandbox Code Playgroud)
但它也必须在字符串中替换......
UPDATE `article` SET `abstract`=REPLACE(`abstract`,' style="color: rgb(0, 0, 0)\;"','')
Run Code Online (Sandbox Code Playgroud)
但是仍然显示错误消息。
同源中描述的另一个选项是在语句末尾添加分号:
UPDATE `article` SET `abstract`=REPLACE(`abstract`,' style="color: rgb(0, 0, 0);"','');
Run Code Online (Sandbox Code Playgroud)
而这两者的结合:
UPDATE `article` SET `abstract`=REPLACE(`abstract`,' style="color: rgb(0, 0, 0)\;"','');
Run Code Online (Sandbox Code Playgroud)
错误信息仍然存在。