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
版权声明: 转载请注明出处.