這是有關 Access SQL 一系列文章的其中一篇。 本文將說明如何撰寫 WHERE 子句,並透過範例說明可在 WHERE 子句中使用的各種技巧。
在 SQL 陳述式中,WHERE 子句會針對含有查詢結果中要包含之值的記錄,指定欄位值必須符合的準則。
如需 Access SQL 概觀,請參閱 Access SQL:基本概念、詞彙和語法一文。
本文內容
使用準則限制結果
當您想要使用資料來限制查詢中傳回的記錄數量時,您可以使用準則。 查詢準則與公式相似,它是可能包含欄位參照、運算子及常數的字串。 查詢準則是一種運算式。
下表顯示部分範例準則,並說明其運作方式。
準則 |
描述 |
>25 and <50 |
這個準則適用於 [數字] 欄位,例如 [Price] 或 [UnitsInStock]。 它只包含其 [Price] 或 [UnitsInStock] 欄位值大於 25 並小於 50 的記錄。 |
DateDiff ("yyyy", [BirthDate], Date()) > 30 |
這個準則適用於 [日期/時間] 欄位,例如 [BirthDate]。 查詢結果只會包含人員的生日與今天日期之間的年數大於 30 的記錄。 |
Is Null |
這個準則可以套用到任何種類的欄位,以顯示欄位值為 Null 的記錄。 |
如上一個資料表所示,準則彼此看起來可能極為不同,視準則套用之欄位的資料類型和您的特定需求而定。 有些準則很簡單,並使用基本運算子和常數。 有他準則就很複雜,並使用函數和特殊運算子,且包含欄位參照。
重要: 如果欄位與彙總函數搭配使用,您無法在 WHERE 子句中為該欄位指定準則。 您可改用 HAVING 子句來為彙總欄位指定準則。 如需詳細資訊,請參閱Access SQL:基本概念、詞彙和語法和 HAVING 子句文章。
WHERE 子句語法
您可在 SELECT 陳述式的 WHERE 子句中使用查詢準則。
WHERE 子句具有下列基本語法:
WHERE field = criterion
例如,假設您需要某個客戶的電話號碼,但您只記得該客戶的姓氏為 Bagel。 與其查看資料庫中的所有電話號碼,您可以使用 WHERE 子句來限制結果,以更輕鬆地找到您需要的電話號碼。 假設姓氏是儲存在名為 [LastName] 的欄位,WHERE 子句看起來會像這樣:
WHERE [LastName]='Bagel'
附註: 您不必以相等值做為 WHERE 子句中的準則基礎。 您可以使用其他比較運算子,例如大於 (>) 或小於 (<)。 例如,WHERE [Price]>100。
使用 WHERE 子句合併資料來源
有時候您可能會想要根據有相符資料但有不同資料類型的欄位來合併資料來源。 例如,一個資料表中的欄位可能具有 [數字] 資料類型,而您想要將該欄位與另一個資料表中具有 [文字] 資料類型的欄位比較。
您無法在具有不同資料類型的欄位之間建立聯結。 若要根據具有不同資料類型之欄位中的值合併來自兩個資料來源的資料,您可用 LIKE 關鍵字來建立使用一個欄位做為另一個欄位之準則的 WHERE 子句。
例如,假設您要使用來自資料表1 和資料表2 的資料,但僅限於欄位1 (資料表1 中的文字欄位) 中的資料與欄位2 (資料表2 中的數字欄位) 中的資料相符之情況。 WHERE 子句看起來會像以下這樣:
WHERE field1 LIKE field2
如需有關如何建立 WHERE 子句中使用之準則的詳細資訊,請參閱查詢準則範例一文。