SQL Server Where子句

在本教學中,將學習如何使用SQL Server WHERE子句來過濾查詢返回的行。

SQL Server WHERE子句簡介

當使用SELECT語句查詢表中的數據時,將獲得表的所有行,這是顯然是不必要的,因為應用程式當時只能處理一組行。

要從表中獲取滿足一行或多個條件的行,請使用WHERE子句,如下所示:

SELECT
    select_list
FROM
    table_name
WHERE
    search_condition;

WHERE子句中,指定搜索條件以過濾FROM子句返回的行。 WHERE子句僅返回導致搜索條件計算為TRUE的行。
搜索條件是邏輯運算式或多個邏輯運算式的組合。 在SQL中,邏輯運算式通常稱為謂詞。

請注意,SQL Server使用三值謂詞邏輯,其中邏輯運算式可以計算為TRUEFALSEUNKNOWNWHERE子句不會返回導致謂詞計算結果為FALSEUNKNOWN的任何行。

SQL Server WHERE示例

我們將使用示例資料庫中的products表進行演示,表的結構如下:

A. 通過使用簡單的相等來查找行

以下語句檢索類別為id1的所有產品:

SELECT
    product_id,
    product_name,
    category_id,
    model_year,
    list_price
FROM
    production.products
WHERE
    category_id = 1
ORDER BY
    list_price DESC;

執行上面查詢語句,得到以下結果:

B. 查找滿足兩個條件的行

以下示例返回滿足兩個條件的產品:category_id1model_year2018。它使用邏輯運算符AND來組合這兩個條件。

SELECT
    product_id,
    product_name,
    category_id,
    model_year,
    list_price
FROM
    production.products
WHERE
    category_id = 1 AND model_year = 2018
ORDER BY
    list_price DESC;

執行上面查詢語句,得到以下結果:

C. 使用比較運算符查找行

以下語句查找價格大於300且型號為2018的產品。

SELECT
    product_id,
    product_name,
    category_id,
    model_year,
    list_price
FROM
    production.products
WHERE
    list_price > 300 AND model_year = 2018
ORDER BY
    list_price DESC;

執行上面查詢語句,得到以下結果:

D. 查找滿足兩個條件中的任何一個的行

以下查詢查找價格大於3000或型號為2018的產品。滿足其中一個條件的任何產品都包含在結果集中。

SELECT
    product_id,
    product_name,
    category_id,
    model_year,
    list_price
FROM
    production.products
WHERE
    list_price > 3000 OR model_year = 2018
ORDER BY
    list_price DESC;

執行上面查詢語句,得到以下結果:

請注意,OR運算符用於組合謂詞。

E. 查找具有兩個值之間的值的行

以下語句查找價格介於18991999.99之間的產品:

SELECT
    product_id,
    product_name,
    category_id,
    model_year,
    list_price
FROM
    production.products
WHERE
    list_price BETWEEN 1899.00 AND 1999.99
ORDER BY
    list_price DESC;

執行上面查詢語句,得到以下結果:

F. 查找值列表中具有值的行

以下示例使用IN運算符查找價格為299.99466.99489.99的產品。

SELECT
    product_id,
    product_name,
    category_id,
    model_year,
    list_price
FROM
    production.products
WHERE
    list_price IN (299.99, 369.99, 489.99)
ORDER BY
    list_price DESC;

執行上面查詢語句,得到以下結果:

G. 查找其值包含字串的行

以下示例使用LIKE運算符查找名稱中包含字串Cruiser的產品:

SELECT
    product_id,
    product_name,
    category_id,
    model_year,
    list_price
FROM
    production.products
WHERE
    product_name LIKE '%Cruiser%'
ORDER BY
    list_price;

執行上面查詢語句,得到以下結果:

在本教學中,學習了如何使用SQL Server WHERE子句根據一行或多個條件篩選行。


上一篇: SQL Server數據查詢 下一篇: SQL Server連接表