SQL - BOOLEAN
- MySQL 中的 Boolean
- MS SQL Server 中的 Boolean
- 过滤 Boolean 数据
- 否定 Boolean 条件
- 处理 NULL 值
- 更新 Boolean 值
Boolean 是一种通用数据类型,用于存储 true 或 false 值。当我们在表列中定义变量时使用它。
例如,客户想要所有红色汽车的列表。因此,我们可以使用下面的表中给出的 BOOLEAN 操作符来查找。
在这里,IS_RED 是 BOOLEAN 列,根据汽车的颜色返回 TRUE 或 FALSE 值。
像 PostgreSQL 和 PL/SQL 这样的数据库提供了 Boolean 数据类型,缩写为 BOOL。而像 MySQL 和 Oracle SQL 这样的数据库没有 Boolean 数据类型。为了表示 Boolean 值,它们分别提供了 TINYINT 和 BIT 数据类型。
MySQL 中的 Boolean
MySQL 提供了多种处理 Boolean 数据的方式。您可以使用 BOOL、BOOLEAN 或 TINYINT 来表示 Boolean 值。
当您使用 BOOL 或 BOOLEAN 时,MySQL 内部会将它们转换为 TINYINT。类似于许多编程语言如 PHP、C 和 C++,MySQL 将 TRUE 字面量表示为 1,将 FALSE 字面量表示为 0。
示例
在这里,我们创建一个名为 'CARS' 的表,其中包含 BOOLEAN 列。创建表的查询如下 −
CREATE TABLE CARS ( ID INT NOT NULL, Name VARCHAR(150), IsRed BOOLEAN );
在上面的示例中,创建了一个带有 BOOLEAN 列 IsRed 的表。您可以在此列中插入 1 表示 TRUE 或 0 表示 FALSE,以表示相应的 Boolean 值。
MS SQL Server 中的 Boolean
在 MS SQL Server 中,没有直接的 BOOLEAN 数据类型。相反,您可以使用 BIT 数据类型来表示 Boolean 值,其中 0 表示 FALSE,1 表示 TRUE。BIT 数据类型也可以接受 NULL 值。
示例
以下是在 SQL Server 中创建带有 BOOLEAN 列的表的示例 −
CREATE TABLE CUSTOMERS ( ID INT NOT NULL, Name VARCHAR(150), IsAvailable BIT );
在上面的示例中,创建了一个名为 CUSTOMERS 的表,其中包含以 BIT 数据类型表示的 BOOLEAN 列 IsAvailable。您可以在此列中插入 0 表示 FALSE、1 表示 TRUE,或 NULL 表示未知值。
现在您了解了 SQL Server 和 MySQL 中 Boolean 数据类型的实现,让我们探索如何在 SQL 中处理 Boolean 数据,包括基于 Boolean 列的过滤和查询。过滤 Boolean 数据
您可以在 SQL 中基于 Boolean 列过滤数据。例如,在 MySQL 中,要查找所有红色汽车,可以使用 BOOLEAN 列 'IsRed' 过滤 TRUE 值,如下所示 −
SELECT * FROM CARS WHERE IsRed = TRUE;
在 SQL Server 中,要查找红色汽车,可以按以下方式过滤 TRUE 值 (IsRed = 1) −
SELECT * FROM CARS WHERE IsRed = 1;
否定 Boolean 条件
您也可以否定 Boolean 条件来查找不是 TRUE 的记录。例如,要查找非红色汽车,可以在 MySQL 中使用以下查询 −
SELECT * FROM CARS WHERE IsRed = 0;
SQL Server 中的查询如下 −
SELECT * FROM CARS WHERE IsRed = FALSE;
处理 NULL 值
您也可以在 SQL 中处理 Boolean 数据的 NULL 值。如前所述,SQL Server 中的 BIT 数据类型和 MySQL 中的 BOOL/BOOLEAN 数据类型都可以接受 NULL 值,这些值可以表示未知或未指定的条件。
要过滤 Boolean 列中具有 NULL 值的记录,您可以在 MySQL 和 SQL Server 中使用 IS NULL 或 IS NOT NULL 条件 −
-- 查找可用性未指定的汽车 SELECT * FROM CARS WHERE IsAvailable IS NULL; -- 查找可用性已指定的汽车 SELECT * FROM CARS WHERE IsAvailable IS NOT NULL;
在上面的查询中,我们根据 IsAvailable 列是否为 NULL 或非 NULL 来过滤汽车。
更新布尔值
你也可以在 SQL 表中更新 Boolean 值。要在 MySQL 中更改 Boolean 列的值,可以使用以下所示的 UPDATE 语句 −
-- 将 ID 为 123 的汽车的 IsRed 更改为 TRUE UPDATE CARS SET IsRed = TRUE WHERE ID = 123;
在上面的示例中,我们为 ID 为 123 的特定汽车更新了 IsRed 列,将其设置为 TRUE。
要在 SQL Server 中更新 Boolean 值,请使用以下查询 −
-- 将 ID 为 123 的汽车的 IsRed 更改为 TRUE UPDATE CARS SET IsRed = 1 WHERE ID = 123;