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;
廣告