Mysql 将值设置为';时使用大小写更新数据库;0';
我在mysql中观察到一个非常奇怪的行为,我非常乐意得到一些建议 我想将列中的字段从1更新为4,从6更新为9。为此,我将其用作测试Mysql 将值设置为';时使用大小写更新数据库;0';,mysql,phpmyadmin,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 如果我运行相同的查询而不使用case,则 UPDATE `test` SET `id`= 4 WHERE `id` =1 它很好用 当我
UPDATE `test` SET `id`= case when 'id'= 1 then 4 else 'id' end where id =1
但是,当我在phpmyadmin中运行上述命令时,值被更改为数字0,而不是4
如果我运行相同的查询而不使用case,则
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”
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
谢谢你,班巴姆。它现在起作用了,我真的没有意识到这一点,不客气。始终对列和表名@user3358102使用反勾号(或完全不使用)