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)的同义词),以及如何操作布尔值。

