Navicat 部落格

SQL 中的述詞 2022 年 5 月 3 日,由 Robert Gravelle 撰寫

本週,我們將暫停「一些常見的 SQL 查詢錯誤」系列,轉為探討 SQL 中的述詞(Predicate)。原因是述詞將成為「常見的 SQL 查詢錯誤」系列的第 3 部分。

什麼是述詞?

述詞只是一個評估為 TRUE、FALSE 或 UNKNOWN 的運算式。述詞通常用在 WHERE 和 HAVING 子句的搜尋條件中、FROM 子句的聯結條件中,以及任何其他需要布爾值的查詢部分中。

述詞有多種類型,包括:

  • 比較
  • LIKE
  • BETWEEN
  • IN
  • EXISTS
  • IS NULL (/INTEGER/DECIMAL/FLOAT...)

在本文的剩餘部分中,我們將研究上述述詞類型的幾個範例。

比較述詞

每當我們在運算式中使用比較運算子時,例如 WHERE employee_salary > 100000,我們都在構建一個評估為 TRUE、FALSE 或 UNKNOWN 的述詞。比較運算子包括:

  • = 等於
  • > 大於
  • < 小於
  • >= 大於或等於
  • <= 小於或等於
  • <> 不等於

因此,比較述詞的形式為:

expression_1 comparison_operator expression_2

在比較述詞中,expression2 也可以是子査詢。如果子査詢不傳回任何列,則比較述詞評估為 FALSE。

LIKE 述詞

在 SQL 中,第一的模式比對述詞是 LIKE 運算子,因為它將欄值與指定的模式進行比較。LIKE 適用於任何字元或日期資料類型。以下是一個範例:

like_example (83K)

BETWEEN 述詞

BETWEEN 運算子指定一個範圍,該範圍判斷限定值的下限和上限。例如,在述詞 income BETWEEN 5000 AND 20000 中,選取資料的範圍是大於或等於 5000 且小於或等於 20000。BETWEEN 運算子可用於數字、文字和日期資料類型。以下是一個範例:

between_example (46K)

IN 述詞

IN 運算子允許指定用於查詢搜尋的兩個或多個運算式。如果相應欄的值等於 IN 述詞指定的其中一個運算式,則條件的結果為 TRUE:

in_example (53K)

EXISTS 述詞

EXISTS 述詞接受子查詢作為引數。如果子查詢傳回一列或多列,則傳回 TRUE。如果子查詢傳回零列,則傳回 FALSE。

以下是一個範例:

exists_example (45K)

IS NULL 述詞

使用 IS NULL 來判斷運算式是否為 NULL,因為你無法使用 = 比較運算子測試 NULL。當套用於列值運算式時,所有元素都必須測試相同。

IS NULL 述詞的形式為:

IS [NOT] NULL

例如,如果 x 為 NULL,則運算式 x IS NULL 為 TRUE。

當運算式為 BOOLEAN 類型時,IS UNKNOWN 是 IS NULL 的同義詞。

以下是的查詢使用 IS NOT NULL 述詞來取得所有姓氏為非 NULL 值的演員:

is_not_null_example (24K)

總結

在本章中,我們中斷了定期的文章,為你帶來關於 SQL 述詞的重要課程。述詞通常用在 WHERE 和 HAVING 子句的搜尋條件中、FROM 子句的聯結條件中。它是評估為 TRUE、FALSE 或 UNKNOWN 的運算式。在下週的「常見的 SQL 查詢錯誤」系列中,述詞將再次出現。

Navicat 文章
頻道記錄
分享
部落格封存檔