2015-11-19 66 views
0

我想查找特定列中未格式化文本的表格的所有行并重新格式化它。更新似乎是正确的选择,但它失败了。例如,这表:为什么MySql更新忽略where子句?

CREATE TABLE `test` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `name` VARCHAR(50) NOT NULL, 
    PRIMARY KEY (`id`)); 
INSERT INTO `test` (name) VALUES ('jerk'),('cad'),('slouch'),('slime'); 

运行下面的更新到!添加到不包含它(但不是名称是这样)每名忽略where子句中,始终更新:

UPDATE test SET name = CONCAT(name, '!') WHERE LOCATE(name, '!') = 0; 

重复应用此更新不断添加更多name的末尾。

这里发生了什么事,我该如何做这个条件更新?

编辑:固定错字WHERELOCATE - > WHERE LOCATE

+1

将参数交换到LOCATE。 – Uueerdo

+2

查询中WHERE和LOCATE之间是否有空格? – cnsumner

回答