MySQL 变量怎么加引号

由于要修改一个用户电话号码,SQL如下


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'

百度一顿操作,知道了原因,update 检查严格,phone 在表是 varchar 字段。需要将条件改成字符串,但是后面有些表 phone 字段又是 int 格式,不能完全兼容。
第一反应是修改如下

UPDATE table1 set phone = @new_phone WHERE phone = '@old_phone' AND type = 1;

但是根本匹配不到。

继续分析原因:

显然不是想要的结果。MySQL 的语法也是醉了,查了一遍也没找到怎么在变量上加引号。后来灵感突现,尝试用 CONCAT 方法

最后 SQL 修改为

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;   -- 对
posted @ 2019-11-08 16:17  天明听歌  阅读(1317)  评论(0编辑  收藏  举报