SQL 邏輯運算子

摘要:在本教程中,您將學習 SQL 邏輯運算子以及如何使用它們來測試條件的真偽。

邏輯運算子允許您測試條件的真偽。與比較運算子類似,邏輯運算子返回 true(真)、false(假)或 unknown(未知)的值。

下表展示了 SQL 的邏輯運算子

運算子含義
ALL如果所有比較都為真,則返回真
AND如果兩個表示式都為真,則返回真
ANY如果任一比較為真,則返回真。
BETWEEN如果運算元在某個範圍內,則返回真
EXISTS如果子查詢包含任何行,則返回真
IN如果運算元等於列表中的某個值,則返回真
LIKE如果運算元與某個模式匹配,則返回真
NOT反轉任何其他布林運算子的結果。
OR如果任一表達式為真,則返回真
SOME如果某些表示式為真,則返回真

AND #

AND 運算子允許您在 SQL 語句(如 SELECTUPDATEDELETE)的 WHERE 子句中構建多個條件。

expression1 AND expression2Code language: SQL (Structured Query Language) (sql)

如果兩個表示式的計算結果都為真,則 AND 運算子返回真。

試一試

以下示例查詢所有薪水大於 5,000 且小於 7,000 的員工。

SELECT
  first_name,
  last_name,
  salary
FROM
  employees
WHERE
  salary > 5000
  AND salary < 7000
ORDER BY
  salary;Code language: SQL (Structured Query Language) (sql)

試一試

SQL Logical Operators - AND example

OR #

AND 運算子類似,OR 運算子在 SQL 語句的 WHERE 子句中組合多個條件。

expression1 OR expression2Code language: SQL (Structured Query Language) (sql)

但是,如果至少有一個表示式的計算結果為真,則 OR 運算子返回真。

例如,以下語句查詢薪水為 7,000 或 8,000 的員工。

SELECT
  first_name,
  last_name,
  salary
FROM
  employees
WHERE
  salary = 7000
  OR salary = 8000
ORDER BY
  salary;Code language: SQL (Structured Query Language) (sql)

試一試

SQL Logical Operators - OR example

IS NULL #

IS NULL 運算子將一個值與空值 (null) 進行比較,如果被比較的值為空,則返回真;否則返回假。

例如,以下語句查詢所有沒有電話號碼的員工。

SELECT 
    first_name, last_name, phone_number
FROM
    employees
WHERE
    phone_number IS NULL
ORDER BY first_name , last_name;
Code language: SQL (Structured Query Language) (sql)

試一試

SQL Logical Operators - IS NULL example

BETWEEN #

BETWEEN 運算子在給定最小值和最大值的情況下,搜尋位於一組值之內的資料。請注意,最小值和最大值都包含在條件集中。

例如,以下語句查詢所有薪水在 9,000 到 12,000 之間的員工。

SELECT
  first_name,
  last_name,
  salary
FROM
  employees
WHERE
  salary BETWEEN 9000 AND 12000
ORDER BY
  salary;Code language: SQL (Structured Query Language) (sql)

試一試

SQL Logical Operators - BETWEEN example

請注意,9,000 和 12,000 這兩個值都包含在輸出中。

IN #

IN 運算子將一個值與一個指定的值列表進行比較。如果被比較的值與列表中的至少一個值匹配,則 IN 運算子返回真;否則返回假。

以下語句查詢所有在 8 號或 9 號部門工作的員工。

SELECT
  first_name,
  last_name,
  department_id
FROM
  employees
WHERE
  department_id IN (8, 9)
ORDER BY
  department_id;Code language: SQL (Structured Query Language) (sql)

試一試

SQL Logical Operators - IN example

LIKE #

LIKE 運算子使用萬用字元將一個值與相似的值進行比較。SQL 提供了兩種與 LIKE 運算子一起使用的萬用字元:

  • 百分號 (%) 代表零個、一個或多個字元。
  • 下劃線 (_) 代表單個字元。

以下語句查詢所有名字以字串 jo 開頭的員工。

SELECT 
    employee_id, first_name, last_name
FROM
    employees
WHERE
    first_name LIKE 'jo%'
ORDER BY first_name;
Code language: SQL (Structured Query Language) (sql)

試一試

SQL Logical Operators - LIKE example

以下示例查詢所有名字中第二個字元是 h 的員工。

SELECT
  employee_id,
  first_name,
  last_name
FROM
  employees
WHERE
  first_name LIKE '_h%'
ORDER BY
  first_name;Code language: SQL (Structured Query Language) (sql)

試一試

SQL Logical Operators - LIKE example 2

ALL #

ALL 運算子將一個值與另一個值集合中的所有值進行比較。ALL 運算子必須位於比較運算子之後,並後跟一個子查詢

下圖說明了 ALL 運算子的語法:

comparison_operator ALL (subquery)Code language: SQL (Structured Query Language) (sql)

請注意,您將在子查詢教程中學習有關子查詢的知識。

以下示例查詢所有薪水高於 8 號部門所有員工薪水的員工。

SELECT
  first_name,
  last_name,
  salary
FROM
  employees
WHERE
  salary >= ALL (
    SELECT
      salary
    FROM
      employees
    WHERE
      department_id = 8
  )
ORDER BY
  salary DESC;Code language: SQL (Structured Query Language) (sql)

試一試

SQL Logical Operators - ALL example

ANY #

ANY 運算子根據如下所示的條件,將一個值與集合中的任何值進行比較。

comparison_operator ANY(subquery)Code language: SQL (Structured Query Language) (sql)

與 ALL 運算子類似,ANY 運算子必須位於比較運算子之後,並後跟一個子查詢

例如,以下語句查詢所有薪水高於任何一個部門平均薪水的員工。

SELECT
  first_name,
  last_name,
  salary
FROM
  employees
WHERE
  salary > ANY (
    SELECT
      AVG(salary)
    FROM
      employees
    GROUP BY
      department_id
  )
ORDER BY
  first_name,
  last_name;Code language: SQL (Structured Query Language) (sql)
SQL Logical Operators - SOME example

試一試

請注意,SOMEANY 的別名,因此,您可以互換使用它們。

EXISTS #

EXISTS 運算子用於測試子查詢是否包含任何行。

EXISTS (subquery)Code language: SQL (Structured Query Language) (sql)

如果子查詢返回一行或多行,則 EXISTS 的結果為真;否則,結果為假。

例如,以下語句查詢所有有家屬的員工。

SELECT
  first_name,
  last_name
FROM
  employees e
WHERE
  EXISTS (
    SELECT
      1
    FROM
      dependents d
    WHERE
      d.employee_id = e.employee_id
  );Code language: SQL (Structured Query Language) (sql)

試一試

SQL Logical Operators - EXISTS example

現在您應該對所有 SQL 邏輯運算子以及如何使用它們來測試條件的真偽有了簡要的瞭解。在接下來的教程中,您將詳細學習每個邏輯運算子。

本教程是否有幫助?
© .