SQL - 布尔值



布尔值是一种通用数据类型,用于存储真或假值。在定义表中列的变量时使用。

例如,客户想要所有红色汽车的列表。因此,我们可以使用下表中所示的布尔运算符找到它:

Boolean Operator

这里,IS_RED 是布尔列,根据汽车的颜色返回 TRUE 或 FALSE 值。

PostgreSQL 和 PL/SQL 等数据库提供布尔数据类型,缩写为 BOOL。而 MySQL 和 Oracle SQL 等数据库没有布尔数据类型。为了表示布尔值,它们分别提供 TINYINT 和 BIT 数据类型。

MySQL 中的布尔值

MySQL 提供了多种处理布尔数据的方法。您可以使用 BOOL、BOOLEAN 或 TINYINT 来表示布尔值。

当您使用 BOOL 或 BOOLEAN 时,MySQL 会将其内部转换为 TINYINT。与许多编程语言(如 PHP、C 和 C++)类似,MySQL 将 TRUE 字面量表示为 1,将 FALSE 字面量表示为 0。

示例

在这里,我们正在创建一个带有布尔列的表“CARS”。创建表的查询如下:

CREATE TABLE CARS (
   ID INT NOT NULL,
   Name VARCHAR(150),
   IsRed BOOLEAN
);

在上例中,创建了一个带布尔列IsRed的表。您可以将 TRUE 作为 1 或 FALSE 作为 0 插入此列以表示相应的布尔值。

MS SQL Server 中的布尔值

在 MS SQL Server 中,没有直接的布尔数据类型。相反,您可以使用 BIT 数据类型来表示布尔值,其中 0 表示 FALSE,1 表示 TRUE。BIT 数据类型还可以接受 NULL 值。

示例

以下是使用 SQL Server 创建带有布尔列的表的示例:

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   Name VARCHAR(150),
   IsAvailable BIT
);

在上例中,创建了一个名为 CUSTOMERS 的表,其中包含一个布尔列IsAvailable,表示为 BIT 数据类型。您可以在此列中插入 0 表示 FALSE,1 表示 TRUE,或 NULL 表示未知值。

现在您已经了解了布尔数据类型在 SQL Server 和 MySQL 中是如何实现的,让我们来探讨如何在 SQL 中处理布尔数据,包括基于布尔列的过滤和查询。

过滤布尔数据

您可以根据 SQL 中的布尔列过滤数据。例如,在 MySQL 中,要查找所有红色汽车,您可以使用布尔列“IsRed”来过滤 TRUE 值,如下所示:

SELECT * FROM CARS WHERE IsRed = TRUE;

在 SQL Server 中,要查找红色的汽车,您可以过滤 TRUE 值 (IsRed = 1),如下所示:

SELECT * FROM CARS WHERE IsRed = 1;

否定布尔条件

您还可以否定布尔条件以查找不是 TRUE 的记录。例如,要查找不是红色的汽车,请在 MySQL 中使用以下查询:

SELECT * FROM CARS WHERE IsRed = 0;

以下是 SQL Server 中的查询:

SELECT * FROM CARS WHERE IsRed = FALSE;

处理 NULL 值

您也可以在 SQL 中处理布尔数据的 NULL 值。如前所述,SQL Server 中的 BIT 数据类型以及 MySQL 中的 BOOL/BOOLEAN 数据类型可以接受 NULL 值,这可以表示未知或未指定的条件。

要过滤布尔列中具有 NULL 值的记录,您可以在 MySQL 和 SQL Server 中使用IS NULLIS NOT NULL 条件:

-- Finding cars with unspecified availability
SELECT * FROM CARS WHERE IsAvailable IS NULL;

-- Finding cars with specified availability
SELECT * FROM CARS WHERE IsAvailable IS NOT NULL;

在上例查询中,我们根据 IsAvailable 列是否为 NULL 或非 NULL 来过滤汽车。

更新布尔值

您也可以更新 SQL 表中的布尔值。要更改 MySQL 中布尔列的值,您可以使用 UPDATE 语句,如下所示:

-- Changing IsRed to TRUE for car with ID 123
UPDATE CARS SET IsRed = TRUE WHERE ID = 123;

在上例中,我们更新了 ID 为 123 的特定汽车的 IsRed 列,将其设置为 TRUE。

要更新 SQL Server 中的布尔值,请使用以下查询:

-- Changing IsRed to TRUE for car with ID 123
UPDATE CARS SET IsRed = 1 WHERE ID = 123;
广告
© . All rights reserved.