为什么 MySQL WHERE 语句在枚举列中使用 = 比较 bool 值时无法检索?

为什么 mysql where 语句在枚举列中使用 = 比较 bool 值时无法检索?

为什么 mysql 的 where 语句在 bool 值之间使用 = 时无法进行检索?

问题:

表结构包含一个枚举列 is_svddb_match,它可以是 'true' 或 'false'。但是,当使用 where is_svddb_match = false 查询时,结果集中没有显示任何记录,即使存在 is_svddb_match 为 'false' 的值。

答案:

mysql 中枚举类型的索引是从 1 开始的,而不是从 0 开始的。在给定的表中,'true' 枚举值为 1,而 'false' 枚举值为 2。因此:

  • where is_svddb_match = false 等于 where is_svddb_match = 0,这是无效的,因为索引中没有为 'false' 分配的值 0。
  • where is_svddb_match = true 等于 where is_svddb_match = 1,这是有效的,因为 'true' 枚举值为 1。

避免混淆:

为了避免混淆,避免将枚举值直接与整数进行比较。取而代之的是,使用字符串比较:

WHERE is_svddb_match = 'false'

这将正确检索 is_svddb_match 列值为 'false' 的记录。

以上就是为什么 MySQL WHERE 语句在枚举列中使用 = 比较 bool 值时无法检索?的详细内容,更多请关注其它相关文章!