我想查找特定列中未格式化文本的表格的所有行并重新格式化。更新似乎是正确的选择,但它失败了。例如,这个表:
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 - >在哪里定位
答案 0 :(得分:2)
看起来你的LOCATE参数是倒退的。它的LOCATE(substr,str)。 http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_locate