MySQL BOOLEAN数据类型简介
时间:2019-11-20 08:52:10 来源:igfitidea点击:
简介:本教程向您展示如何使用MySQL BOOLEAN数据类型存储布尔值true和false。
MySQL BOOLEAN数据类型简介
MySQL没有内置的布尔类型。
但是,它改用TINYINT(1)。
为了更加方便,MySQL提供了BOOLEAN或BOOL作为TINYINT(1)的同义词。
在MySQL中,零被视为false,非零值被视为true。
要使用布尔文字,请使用常量TRUE和FALSE,它们的值分别为1和0。
请参见以下示例:
SELECT true, false, TRUE, FALSE, True, False; -- 1 0 1 0 1 0
MySQL BOOLEAN示例
MySQL将布尔值作为整数存储在表中。
为了说明这一点,让我们看下面的任务表:
CREATE TABLE tasks ( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(255) NOT NULL, completed BOOLEAN );
即使我们将完成的列指定为BOOLEAN,当我们显示表定义时,它还是TINYINT(1),如下所示:
DESCRIBE tasks;
以下语句将两行插入到任务表中:
INSERT INTO tasks(title,completed) VALUES('Master MySQL Boolean type',true), ('Design database table',false);
在将数据保存到Boolean列之前,MySQL会将其转换为1或0。
以下查询从任务表中检索数据:
SELECT id, title, completed FROM tasks;
如您所见,true和false分别转换为1和0。
由于布尔值为TINYINT(1),因此可以在布尔列中插入1和0以外的值。
考虑以下示例:
INSERT INTO tasks(title,completed) VALUES('Test Boolean with a number',2);
运行正常。
如果要输出结果为true和false,则可以使用IF函数,如下所示:
SELECT id, title, IF(completed, 'true', 'false') completed FROM tasks;
MySQL BOOLEAN运算子
要在任务表中获取所有已完成的任务,您可能会提出以下查询:
SELECT id, title, completed FROM tasks WHERE completed = TRUE;
如您所见,它仅返回具有完成值1的任务。
要对其进行修复,必须使用IS运算符:
SELECT id, title, completed FROM tasks WHERE completed IS TRUE;
在此示例中,我们使用IS运算符针对布尔值测试了一个值。
要获取待处理的任务,请使用IS FALSE或IS NOT TRUE,如下所示:
SELECT id, title, completed FROM tasks WHERE completed IS NOT TRUE
在本教程中,您学习了如何使用MySQL BOOLEAN数据类型(它是TINYINT(1)的同义词),以及如何操作布尔值。