MySQL BOOLEAN数据类型
MySQL没有内置的布尔类型。 但是它使用TINYINT(1)
。 为了更方便,MySQL提供BOOLEAN
或BOOL
作为TINYINT(1)
的同义词。在MySQL中,0
被认为是false
,非零值被认为是true
。
MySQL BOOLEAN示例
MySQL将布尔值作为整数存储在表中,我们建立一张tasks
表来作为示例展示。
1 | CREATE TABLE tasks ( |
我们在建表语句中将 completed
设为boolean
类型,但是展示表结构的时候它会变为 tinyint(1)
。
1 | CREATE TABLE `tasks` ( |
我们向表中插入两条数据
1 | INSERT INTO `Test`.`tasks` (`id`, `title`, `completed`) VALUES (2, '测试', true); |
MySQL会在存储数据之前,把true
和false
转换成1
和2
再保存,下图是查询结果
因为Boolean
类型是tinyint(1)
的同义词,所以可以在布尔列中插入1
和0
以外的值。如下示例:
1 | INSERT INTO `Test`.`tasks` (`id`, `title`, `completed`) VALUES (1, '打算', NULL); |
现在表中的数据如下:
如果要将结果输出为true
和false
,可以使用IF
函数,如下所示:
1 | SELECT |
执行以上语句,结果如下
MySQL BOOLEAN运算符
如果你想查询表中所有 completed
为true
的数据,那么就应该使用IS
运算符而不是=
1 | SELECT |
执行以上语句,结果如下:
它只返回completed
列值为1的数据,要想返回所有为true
的则必须使用 IS
运算符
1 | SELECT |
执行结果:
当然你还可以使用 IS FALSE
或者IS NOT TRUE
,来查询所有待处理的数据。必须注意的是,前者只能查询出completed
等于0
的数据,后者还可以查询出completed
等于null
的数据。
原文链接: https://alexhuihui.github.io/article/20220117.html
版权声明: 转载请注明出处.