2017-06-01 231 views
0

我有一个带有文章表的MySQL DB(5.7.18)。每篇文章在abstract列中都有一个摘要作为html字符串。由于在HTML编辑器中的错误,许多HTML标记都是污染恼人的风格,就像这样:更新语句中的MySQL分号导致语法错误

<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服务器版本正确的语法使用 附近'风格=“COLOR:RGB(0,0,0))”手动位于第1行

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

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)\;"',''); 

错误信息仍然存在。

+0

我似乎无法为[复制](http://rextester.com/OOQ84230)这个问题在当地,至少文本替换本身对我的作品。 –

+0

谢谢@TimBiegeleisen。所以这可能是特定于我的环境的东西。 – Dorad

+0

可以重现。在一个字符串中的分号应该不会引起任何问题,在insert语句中仍然将该字符串括在单引号中。尝试结束您的声明;; $$ 定界符;。 (不知道这是否有帮助) – Karthik

回答

1

找到它。

这是phpMyAdmin中默认设置为分号(;)的字段。

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

Delimiter

+0

phpMyAdmin?男人......有一些更好的选择:p –

+0

没有味道的会计......(它用希伯来语押韵:עַלטַעַםוְעַלרֵיחַאֵיןלְהִתְוַכֵּחַ)。 – Dorad

+0

当然,但在这种情况下,phpMyAdmin使您无法使用有效的SQL语法 –