因为要修改一个用户电话号码,SQL以下code
set @old_phone=13888888888; set @new_phone=13888888887; UPDATE table1 set phone = @new_phone WHERE phone = @old_phone AND type = 1; ...
结果报错 1292 - Truncated incorrect DOUBLE value: 'xxx'blog
百度一顿操做,知道了缘由,update 检查严格,phone 在表是 varchar 字段。须要将条件改为字符串,可是后面有些表 phone 字段又是 int 格式,不能彻底兼容。
第一反应是修改以下字符串
UPDATE table1 set phone = @new_phone WHERE phone = '@old_phone' AND type = 1;
可是根本匹配不到。table
继续分析缘由:
变量
显然不是想要的结果。MySQL 的语法也是醉了,查了一遍也没找到怎么在变量上加引号。后来灵感突现,尝试用 CONCAT 方法百度
最后 SQL 修改成date
UPDATE table1 set phone = @new_phone WHERE phone = @old_phone AND type = 1; -- 错 UPDATE table1 set phone = @new_phone WHERE phone = CONCAT(@old_phone) AND type = 1; -- 对