将1作为数字保存到ENUM(' 1',' 0')字段设置值为0

时间:2015-06-21 21:48:13

标签: mysql enums

1整数保存为ENUM('1', '0')时,请注意一些奇怪的事情。该值存储为0。

UPDATE table SET `somefield` = 1 WHERE `id` = 1;

SELECT id, `somefield` WHERE id = 1;

id, somefield
1, 0

有什么方法可以让它发挥作用吗?我宁愿不修改数据库。

此外,非常感谢有关为何发生这种情况以及未转换字段的任何信息

2 个答案:

答案 0 :(得分:2)

当为枚举的更新值提供整数而不是字符串时,它被解释为枚举值的索引,而不是

与所有SQL一样,枚举使用基于1的索引,因此对于你的枚举索引1是'1'而索引2是'0'。还有别的错误。

这意味着你的更新语句应该导致'1',而不是零,所以你的表没有像你说的那样定义,或者你的更新语句不像你说的那样。

SQLFiddle证明这一点。

答案 1 :(得分:0)

DBCommand

需要将值指定为字符串。