将值设置为“ 0”的情况下更新数据库

时间:2018-06-26 21:39:00

标签: mysql phpmyadmin

我在mysql中观察到一个非常奇怪的行为,很乐意提供一些建议。

我想将一列中的字段更新为1至4和6至9。为此,我将其用作测试

UPDATE `test` SET `id`= case when 'id'= 1 then 4 else 'id' end where id =1

但是,当我在phpmyadmin中运行以上命令时,值更改为数字0而不是4。

如果我在没有大小写的情况下运行相同的查询

UPDATE `test` SET `id`= 4 WHERE `id` =1

它工作正常。

我跑步时

UPDATE `test` SET `id`= 
case when 'id'= 1 then 4 
when 'id'= 6 then 9 

else 'id' end where id in (1,6)

它将1和6替换为“ 0”

1 个答案:

答案 0 :(得分:1)

id是一个数值,因为在mysql中id通常是INT类型。您正在混用反引号(```)和('),因此将字符串'id'隐式转换为int,结果为0。

select CAST('foo' as UNSIGNED) ---> 0

因此,您可能希望更改查询以始终使用反引号

UPDATE `test` SET `id`= case when `id` = 1 then 4 else `id` end where `id` = 1