SQL查询不起作用。可能的语法错误

时间:2017-03-13 10:38:37

标签: mysql

似乎很奇怪,但非常简单的SQL查询对我不起作用。

UPDATE wp_postmeta SET `meta_value` = REPLACE(post_meta, `http://url/`, `http://new_url`)

出现错误消息'找到了一条新语句,但在它与前一个语句之间没有找到分隔符(REPLACE),并且当我尝试执行代码时 - #1064 - 您的SQL语法出错了;检查与您的MySQL服务器版本对应的手册,以便在第1行的')'附近使用正确的语法。请指教。

1 个答案:

答案 0 :(得分:0)

您的具体问题是使用反引号而不是单引号。但是,我认为表达逻辑的更好方法是:

UPDATE wp_postmeta
    SET meta_value = CONCAT('http://new_url', SUBSTRING(post_meta, 12) )
    WHERE meta_value LIKE 'http://url/%' AND
          meta_key = ??;

这使用WHERE子句筛选出不应更新的行。它还确保更新仅发生在字符串开头的'http://url/' - 通常是预期的逻辑。