An Introduction to MySQL BOOLEAN Data Type

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

MySQL BOOLEAN 数据类型简介

MySQL没有内置的布尔类型。但是,它使用TINYINT(1)代替。为了更方便,MySQL 提供了BOOLEANBOOL作为TINYINT(1)的同义词。

在 MySQL 中,零被视为 false,非零值被视为 true。要使用布尔文字,请使用分别计算结果为 1 和 0 的常量TRUEFALSE 。请参见以下示例:

SELECT true, false, TRUE, FALSE, True, False;
-- 1 0 1 0 1 0
Code language: SQL (Structured Query Language) (sql)

MySQL 布尔值示例

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

CREATE TABLE tasks (
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(255) NOT NULL,
    completed BOOLEAN
);
Code language: SQL (Structured Query Language) (sql)

尽管我们将完整列指定为BOOLEAN ,但当我们显示表定义时,它是TINYINT(1)如下所示:

DESCRIBE tasks;
Code language: SQL (Structured Query Language) (sql)
MySQL BOOLEAN example

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

INSERT INTO tasks(title,completed)
VALUES('Master MySQL Boolean type',true),
      ('Design database table',false); 
Code language: SQL (Structured Query Language) (sql)

在将数据保存到布尔列之前,MySQL 将其转换为 1 或 0。以下查询tasks表中检索数据:

SELECT 
    id, title, completed
FROM
    tasks; 
Code language: SQL (Structured Query Language) (sql)
MySQL BOOLEAN SELECT example

正如你所看到的, truefalse被转换为 1 和 0。

由于 Boolean 为TINYINT(1) ,因此您可以将 1 和 0 以外的值插入到 Boolean 列中。考虑以下示例:

INSERT INTO tasks(title,completed)
VALUES('Test Boolean with a number',2);
Code language: SQL (Structured Query Language) (sql)

它运行良好。

MySQL BOOLEAN integer example

如果想要输出结果为truefalse ,可以使用IF函数,如下所示:

SELECT 
    id, 
    title, 
    IF(completed, 'true', 'false') completed
FROM
    tasks;
Code language: SQL (Structured Query Language) (sql)
MySQL BOOLEAN IF function example

MySQL 布尔运算符

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

SELECT 
    id, title, completed
FROM
    tasks
WHERE
    completed = TRUE;
Code language: SQL (Structured Query Language) (sql)
MySQL BOOLEAN comparison operator

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

SELECT 
    id, title, completed
FROM
    tasks
WHERE
    completed IS TRUE;
Code language: SQL (Structured Query Language) (sql)
MySQL BOOLEAN IS operator

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

要获取挂起的任务,请使用IS FALSEIS NOT TRUE如下所示:

SELECT 
    id, title, completed
FROM
    tasks
WHERE
    completed IS NOT TRUE
Code language: SQL (Structured Query Language) (sql)
MySQL BOOLEAN IS NOT operator

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

本教程有帮助吗?