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

时间:2017-06-01 04:38:18

标签: mysql syntax

我有一个带有文章表的MySQL DB(5.7.18)。每篇文章都在abstract列中有一个抽象的HTML字符串。由于HTML编辑器中存在错误,许多HTML标签都会被烦人的样式污染,如下所示:

<h1 style="color: rgb(0, 0, 0);">Wonderful Abstract</h1>

为了解决这个问题,我正在尝试以下查询:

UPDATE `article` SET `abstract`=REPLACE(`abstract`,' style="color: rgb(0, 0, 0);"','')

不幸的是,显示了语法错误:

  

#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法   在第'第1行''style =“color:rgb(0,0,0))'附近

如果删除分号,它可以正常工作:

UPDATE `article` SET `abstract`=REPLACE(`abstract`,' style="color: rgb(0, 0, 0)"','');

但它也必须在字符串中替换......

我找到了一个参考here说逃避它:

UPDATE `article` SET `abstract`=REPLACE(`abstract`,' style="color: rgb(0, 0, 0)\;"','')

但仍会显示错误消息。

同一来源中描述的另一个选项是在语句末尾添加分号:

UPDATE `article` SET `abstract`=REPLACE(`abstract`,' style="color: rgb(0, 0, 0);"','');

这两者的结合:

UPDATE `article` SET `abstract`=REPLACE(`abstract`,' style="color: rgb(0, 0, 0)\;"','');

错误信息仍然存在。

2 个答案:

答案 0 :(得分:3)

找到它。

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

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

Delimiter

答案 1 :(得分:0)

我无法复制这种行为......

http://rextester.com/BZAPY91725

也许您正在使用SPROC?