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

标签 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

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

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

最佳答案

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

像所有 SQL 一样,枚举使用基于 1 的索引,因此对于您的枚举,索引 1 是 '1',索引 2 是 '0'。任何其他都是错误。

这意味着您的更新语句的结果应该是 '1',而不是零,因此要么您的表没有按照您所说的那样定义,要么您的更新语句不像您所说的那样。

查看此 SQLFiddle证明这一点。

关于mysql - 将 1 作为数字保存到 ENUM ('1' ,'0' ) 字段设置值为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30969668/

相关文章:

C# - 检查属性是否存在于枚举的元素上

c# - 如何删除 SQL 中的重复输出?

enums - 用于与 Enum 进行开关或模式匹配的宏

rust - 为什么 Rust 找不到使用 proc_macro_attribute 生成的枚举的方法?

php - 目标机主动拒绝mysqli数据库连接

java - 在 Java 中嵌套枚举

Python 元类为类生成正确的枚举值

MYSQL - 按字母顺序对 2 列进行排序,如果第一列为空,则使用第二列

mysql - bigquery SQL 计算项目计划的开始和结束时间

php - 除非我点击刷新,否则重定向的 PHP 页面不会加载