MySQL BOOLEAN 数据类型简介

简介:本教程向您展示了如何使用 MySQL BOOLEAN 数据类型来存储布尔值,true 和 false。

MySQL BOOLEAN 数据类型介绍

MySQL 没有内置的布尔类型。但是,它 TINYINT(1) 改为使用。为方便起见,MySQL 提供 BOOLEAN 或 BOOL 作为 TINYINT(1) .

在 MySQL 中,零被认为是假的,非零值被认为是真。要使用布尔文字,请使用常量 TRUE 和 FALSE 分别计算为 1 和 0。请参阅以下实例:

SELECT true, false, TRUE, FALSE, True, False;
-- 1 0 1 0 1 0

MySQL 布尔值实例

MySQL 将布尔值作为整数存储在表中。为了证明这一点,让我们看一下下 tasks 表:

CREATE TABLE tasks (
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(255) NOT NULL,
    completed BOOLEAN
);

即使我们将完成的列指定为 BOOLEAN ,但当我们显示表定义时,它 TINYINT(1) 如下所示:

DESCRIBE tasks;

MySQL 布尔值实例
MySQL 布尔值实例

以下语句向 tasks 表中插入 2 行:

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;

MySQL BOOLEAN SELECT 实例
MySQL BOOLEAN SELECT 实例

如您所见, true 和 false 被转换为 1 和 0。

因为 Boolean 是 TINYINT(1) ,所以您可以在 Boolean 列中插入 1 和 0 以外的值。考虑以下实例:

INSERT INTO tasks(title,completed)
VALUES('Test Boolean with a number',2);

它工作正常。

MySQL BOOLEAN 整数实例
MySQL BOOLEAN 整数实例

如果要将结果输出为 true and false ,可以 IF 按如下方式使用该函数:

SELECT
    id,
    title,
    IF(completed, 'true', 'false') completed
FROM
    tasks;

MySQL BOOLEAN IF 函数实例
MySQL BOOLEAN IF 函数实例

MySQL 布尔运算符

要获取 tasks 表中所有已完成的任务,您可能会提出以下查询:

SELECT
    id, title, completed
FROM
    tasks
WHERE
    completed = TRUE;

MySQL BOOLEAN 比较运算符
MySQL BOOLEAN 比较运算符

如您所见,它只返回 completed 值为 1 的任务。要修复它,您必须使用 IS 运算符:

SELECT
    id, title, completed
FROM
    tasks
WHERE
    completed IS TRUE;

MySQL BOOLEAN IS 运算符
MySQL BOOLEAN IS 运算符

在此实例中,我们使用 IS 运算符根据布尔值测试值。

要获取挂起的任务,请使用 IS FALSE 或 IS NOT TRUE 如下:

SELECT
    id, title, completed
FROM
    tasks
WHERE
    completed IS NOT TRUE

MySQL BOOLEAN IS NOT 运算符
MySQL BOOLEAN IS NOT 运算符

在本教程中,您学习了如何使用 MySQL BOOLEAN 数据类型(它是 的同义词 TINYINT(1) )以及如何操作布尔值。