更新语句中的 MySQL 分号导致语法错误

Dor*_*rad 1 mysql syntax

我有一个带有文章表的 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)

错误信息仍然存在。

Dor*_*rad 8

找到了。

它是 phpMyAdmin 中的一个字段,默认情况下设置为分号(;)。

我已将其更改为未使用的字符,并且查询正常运行。

分隔符