MySQL布尔数据类型简介
MySQL布尔数据类型简介
MySQL没有内置的布尔类型。然而,它使用了TINYINT(1)。为了方便起见,MySQL提供了BOOLEAN或BOOL作为TINYINT(1)的同义词。
在MySQL中,零被视为假,非零值被视为真。要使用布尔文字,请使用分别计算为1和0的常量TRUE和FALSE。请参见以下示例:
SELECT true, false, TRUE, FALSE, True, False;
-- 1 0 1 0 1 0
MySQL布尔示例
MySQL将布尔值作为整数存储在表中。为了演示这一点,让我们看看下面的任务表:
CREATE TABLE tasks (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
completed BOOLEAN
);
尽管我们将完成的列指定为布尔值,但当我们显示表定义时,它是TINYINT(1),如下所示:
DESCRIBE tasks;
以下语句在tasks表中插入两行:
INSERT INTO tasks(title,completed)
VALUES('Master MySQL Boolean type',true),
('Design database table',false);
在将数据保存到布尔列之前,MySQL会将其转换为1或0。以下查询从tasks表中检索数据:
SELECT
id, title, completed
FROM
tasks;
如您所见,true和false被转换为1和0。
因为Boolean是TINYINT(1),所以可以在Boolean列中插入除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布尔运算符
要获取tasks表中所有已完成的任务,您可能会提出以下查询:
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布尔数据类型(TINYINT(1)的同义词),以及如何操作布尔值。