登录
首页 >  数据库 >  MySQL

为什么 MySQL 的 WHERE 子句中布尔值字段比较要用字符串而不是数字?

时间:2024-11-23 11:13:02 388浏览 收藏

本篇文章给大家分享《为什么 MySQL 的 WHERE 子句中布尔值字段比较要用字符串而不是数字?》,覆盖了数据库的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

为什么 MySQL 的 WHERE 子句中布尔值字段比较要用字符串而不是数字?

为什么 mysql 的 where 之间无法使用 = 检索布尔值?

在 mysql 中,where 子句中布尔值字段的比较必须使用字符串而不是数字。这是因为 enum 值(布尔值类型作为 enum 值存储)的索引是从 1 开始的,而不是从 0 开始的。

例如,在您提供的表结构中,is_svddb_match 字段是使用 'true'(1)和 'false'(0)值的 enum 类型:

create table `tmp_rt57517_20230407` (
  `video_id` int(10) unsigned not null,
  `key_id` varchar(64) not null comment 'key id from tracking website',
  `trackingwebsite_id` smallint(5) unsigned not null comment 'tracking website id',
  `is_svddb` enum('true','false') not null default 'true' comment 'filter meta by release date',
  `is_svddb_match` enum('true','false') not null default 'true' comment 'filter meta by release date',
  `match_count` int(11) default null comment '匹配到几个母本',
  primary key (`video_id`)
) engine=innodb default charset=latin1

当您使用 where 子句比较布尔值字段时,必须使用相应的字符串值。因此,要检索所有 is_svddb_match 值为 false 的行,您需要使用以下查询:

SELECT * FROM `tmp_rt57517_20230407` WHERE `is_svddb_match` = 'false';

使用数字值(例如 where is_svddb_match = 0)将不会返回任何结果。

好了,本文到此结束,带大家了解了《为什么 MySQL 的 WHERE 子句中布尔值字段比较要用字符串而不是数字?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多数据库知识!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>