查詢條件的範例

套用到
Microsoft 365 Access Access 2024 Access 2021 Access 2019 Access 2016

查詢準則可協助您將注意力集中於 Access 資料庫中的特定項目。 如果項目符合您輸入的所有準則,則會顯示於查詢結果中。

若要將準則新增至 Access 查詢,請在 [設計檢視] 中開啟查詢,並識別您要指定準則的欄位 (欄)。 如果欄位不在設計格線中,請按兩下欄位以將其新增至設計格線,然後在該欄位的 [準則] 列中輸入準則。 如果你不確定該怎麼做,請參見 「查詢入門」。

查詢準則是一個運算式,Access 會將其與查詢欄位值做比較,以決定是否要加入包含每個值的記錄。 例如,= "Chicago" 是一個運算式,Access 可將其與查詢的文字欄位中的值做比較。 如果指定記錄中該欄位的值為 "Chicago",Access 會在查詢結果中包括記錄。

您可以使用下列常用準則範例,做為建立準則的起點。 這些範例都是依資料類型分組。

本主題內容

查詢準則簡介

準則與公式相似,它是可能包含欄位參照、運算子及常數的字串。 查詢條件在 Access 中也稱為表達式。

下表顯示部分範例準則,並說明其運作方式。

Criteria 描述
>25歲和 <50歲 這個準則適用於 [數字] 欄位,例如 [Price] 或 [UnitsInStock]。 它只包含其 [Price] 或 [UnitsInStock] 欄位值大於 25 並小於 50 的記錄。
DateDiff (“yyyy”, [出生日期], 日期 () ) > 30 這個準則適用於 [日期/時間] 欄位,例如 [BirthDate]。 查詢結果只會包含人員的生日與今天日期之間的年數大於 30 的記錄。
Is Null 這個準則可以套用至任何類型的欄位,以顯示欄位值為 Null 的記錄。

如您所見,準則彼此看起來可能極為不同,視其套用之欄位的資料類型和您的特定需求而定。 某些準則很簡單,並使用基本運算子和常數。 其他準則則很複雜,並使用函數、特殊運算子,且包含欄位參照。

本主題依資料類型列出數個常用的準則。 如果本主題的範例並未符合您的特殊需求,您可能需要撰寫您自己的準則。 若要這麼做,您必須先熟悉函數、運算子、特殊字元,以及參照欄位和常值之運算式語法的完整清單。

在這裡,您會找到新增準則的位置和方式。 若要將準則新增至查詢,您必須在 [設計檢視] 中開啟查詢。 然後就可以識別您要為其指定準則的欄位。 如果欄位尚未在設計格線中,您可以藉由將欄位從查詢設計視窗拖曳至欄位格線,或按兩下欄位的方式來新增欄位 (按兩下欄位會自動將它新增至欄位格線中的下一個空白資料行)。 最後,在 [準則] 資料列中輸入準則

您在 [準則] 資料列中為不同的欄位指定的準則會使用 AND 運算子加以合併。 換句話說,[City] 和 [BirthDate] 欄位中指定的準則會解譯成類似於:

城市 = 「芝加哥」 與 「市長日期<」 日期 加上 (「yyyy」, -40, 日期 () )

縣/市及生日的準則

1. 城市與出生日期欄位包含條件。

2. 只有城市球場價值為芝加哥的紀錄才符合此標準。

3. 只有年滿40歲者的紀錄才能符合此標準。

4. 僅包含符合這兩個標準的紀錄。

如果您只想要符合其中一項條件,該怎麼辦? 換句話說,如果有替代準則,該如何輸入?

如果有替代準則,或足以滿足一個集合的兩組獨立準則,您可以在設計格線中使用 [準則] 和 [or] 資料列。

替代準則

1. 城市標準在標準欄中指定。

2. 出生日期標準在 or 列中指定。

[準則] 和 [or] 資料列中指定的準則會使用 OR 運算子加以合併,如下所示:

城市 = 「芝加哥」 ORBirthDate<日期 加 (「yyyy」,-40,日期 () )

如果需要指定其他的替代項目,請使用 [or] 資料列下方的列。

繼續閱讀範例之前,請注意下列事項:

  • 如果準則是暫時的或經常變更,您可以篩選查詢結果,而非經常修改查詢準則。 篩選是會變更查詢結果的暫時準則,不需要改變查詢的設計。 如需有關篩選的詳細資訊,請參閱套用篩選以檢視 Access 資料庫中精選之記錄一文。
  • 如果準則欄位不變,但您要使用的值卻經常在變,您可建立參數查詢。 參數查詢會提示使用者輸入欄位值,然後使用這些值來建立查詢準則。 如需有關參數查詢的詳細資訊,請參閱在查詢和報表中使用參數一文。

下列範例用於示範以儲存連絡人資訊的資料表為基礎之查詢中的 [CountryRegion] 欄位。 準則是在設計格線中欄位的 [準則] 資料列中指定。

CountryRegion 準則

依預設,您為 [超連結] 欄位指定的準則會套用至欄位值的顯示文字部分。 若要為值的目的地統一資源定位器 (URL) 部分指定準則,請使用 HyperlinkPart 運算式。 此表達式的語法如下: HyperlinkPart ([Table1].[Field1],1) = 「http://www.microsoft.com/」,其中 Table1 是包含超連結欄位的表格名稱,Field1 是超連結欄位,http://www.microsoft.com 是你想要匹配的 URL。

若要包含滿足下列條件的記錄... 使用這個準則 查詢結果
與某值 (例如 China (中國)) 完全相符 "China" 傳回 [CountryRegion] 欄位設為 [China] 的記錄。
不符合某個值 (例如 Mexico (墨西哥)) Not "Mexico" 傳回 [CountryRegion] 欄位設為非 Mexico (墨西哥) 之國家/地區的記錄。
開頭為指定的字串,例如 U Like U* 針對名稱以 "U" 開頭的所有國家/地區 (如 UK (英國)、USA (美國) 等等) 傳回記錄。
註: 當用於表達式時,星號 (*) 代表任意字串——也稱為萬用字元。 如需此類字元的清單,請參閱 Access 萬用字元參照一文。
開頭不是指定的字串,例如 U Not Like U* 為名稱開頭不是 "U" 字元的所有國家/地區傳回記錄。
包含指定字串,例如 Korea (韓國) Like "*Korea*" 傳回含有 "Korea" 字串的所有國家/地區的記錄。
不含指定字串,例如 Korea Not Like "*Korea*" 傳回不含 "Korea" 字串的所有國家/地區的記錄。
結尾是指定的字串,例如 "ina" Like "*ina" 針對名稱結尾是 "ina" (如 China (中國) 和 Argentina (阿根廷)) 的所有國家/地區傳回記錄。
結尾不是指定的字串,例如 "ina" Not Like "*ina" 針對名稱結尾不是 "ina" (如 China (中國) 和 Argentina (阿根廷)) 的所有國家/地區傳回記錄。
包含 Null 值 (或缺少值) Is Null 傳回欄位中沒有值的記錄。
不包含 Null 值 Is Not Null 傳回欄位中未缺少值的記錄。
包含零長度字串 "" (一對雙引號) 傳回欄位設定為空白值 (但非 Null) 的記錄。 例如,在其他部門的銷售記錄中,[CountryRegion] 欄位可能包含空白值。
不包含零長度字串 非 "" 傳回 [CountryRegion] 欄位有一個非空白值的記錄。
包含 Null 值或零長度字串 "" Or Is Null 傳回欄位中沒有值,或將欄位設為空白值的記錄。
為空值或空白值 Is Not Null And Not "" 傳回 [CountryRegion] 欄位有非空白、非 Null 值的記錄。
依字母順序排列時,在某個值 (例如 Mexico (墨西哥)) 之後 >= 「墨西哥」 傳回所有國家/地區中,始於 Mexico (墨西哥) 及直到字母順序結尾之所有項目的記錄。
落於特定範圍內,例如 A 到 D Like "[A-D]*" 傳回名稱以字母 "A" 到 "D" 開頭之國家/地區的記錄。
符合兩個值 (例如 USA (美國) 和 UK (英國)) 中的其中一個 "USA" Or "UK" 傳回 USA (美國) 和 UK (英國) 的記錄。
包含值清單中的某個值 In("France", "China", "Germany", "Japan") 傳回清單中指定的所有國家/地區的記錄。
於欄位值的特定位置處含有特定字元 Right([CountryRegion], 1) = "y" 傳回名稱最後一個字母是 "y" 的所有國家/地區的記錄。
符合長度要求 倫 ([鄉村地區]) > 10 傳回名稱長度大於 10 個字元的國家/地區的記錄。
符合特定模式 Like "Chi??" 傳回國家/地區名稱長度是五個字元,且前三個字元是 "Chi" (如 China (中國) 和 Chile (智利)) 之項目的記錄。
註: 字元 _在表達式中使用時,代表單一字元——這些也稱為萬用字元。 字 元 _ 不能與 字元共用同一表達式,也不能與萬 * 用字元共用表達式。 你可以在包含 % 萬用字元的表達式中使用萬用字元 _

適用於數值、貨幣和自動編號欄位的準則

下列範例用於示範以儲存產品資訊的資料表為基礎之查詢中的 [UnitPrice] 欄位。 準則是在查詢設計格線中欄位的 [準則] 資料列中指定。

UnitPrice 準則

若要包含滿足下列條件的記錄... 使用這個標準 查詢結果
與某個值 (例如 100) 完全符合 100 傳回產品單價為 $100 的記錄。
不符合某個值,例如 1000 Not 1000 傳回產品單價不是 $1000 的記錄。
包含的值小於某值 (例如 100) < 100
<= 100
報稅表記錄單價低於100美元 (<100) 。 第二個表達式 (<=100) 顯示單價小於或等於100美元的紀錄。
包含的值大於某值 (例如 99.99) >99.99
>=99.99
退貨紀錄中單價超過99.99美元 (>99.99) 。 第二個運算式會顯示單價大於或等於 $99.99 的記錄。
包含兩個值 (例如 20 和 25) 的其中一個 20 or 25 傳回單價是 $20 或 $25 的記錄。
包含落於某範圍內的值 >49.99 與 <99.99
-或-
介於50到100之間
傳回單價介於 (不含) $49.99 和 $99.99 之間的記錄。
包含落於某範圍之外的值 <50 或 >100 傳回單價不介於 $50 和 $100 之間的記錄。
包含多個特定值中的一個 In(20, 25, 30) 傳回單價是 $20、$25 或 $30 的記錄。
包含以指定數值結尾的值 Like "*4.99" 傳回單價以 "4.99" (例如 $4.99、$14.99、$24.99 等) 結尾的記錄。
註: 字元 *百分比在表達式中使用時,代表任意數量的字元——這些字元也稱為萬用字元。 字元 % 不能與該 * 字元在同一表達式中使用,也不能與 萬用字元的表達式一起使用。 你可以在包含 _ 萬用字元的表達式中使用萬用字元 % 來使用。
包含 Null 值 (或缺少值) Is Null 傳回 [UnitPrice] 欄位中未輸入值的記錄。
包含非 Null 值 Is Not Null 傳回 [UnitPrice] 欄位中未缺少值的記錄。

適用於日期/時間欄位的準則

下列範例用於示範以儲存訂單資訊的資料表為基礎之查詢中的 [OrderDate] 欄位。 準則是在查詢設計格線中欄位的 [準則] 資料列中指定。

OrderDate 準則

若要包含滿足下列條件的記錄... 使用這個準則 查詢結果
與某個值完全符合,例如 2/2/2006 #2/2/2006# 傳回 2006 年 2 月 2 日發生交易的記錄。 請記得以 # 字元括住日期值,讓 Access 可以區別日期值與文字字串。
不符合某個值,例如 2/2/2006 Not #2/2/2006# 傳回 2006 年 2 月 2 日以外的某天發生交易的記錄。
包含特定日期之前的值,例如 2/2/2006 < #2/2/2006# 傳回 2006 年 2 月 2 日之前發生交易的記錄。
若要查看在此日期或之前發生的交易,請使用 <= 運算子代替運算子 <
包含特定日期之後的值,例如 2/2/2006 > #2/2/2006# 傳回 2006 年 2 月 2 日之後發生交易的記錄。
若要查看在此日期或之後發生的交易,請使用 >= 運算子代替運算子 >
包含落在某日期範圍內的值 >#2/2/2006# 與 <#2/4/2006# 傳回 2006 年 2 月 2 日到 2006 年 2 月 4 日之間發生交易的記錄。
您也可以使用 Between 運算子來篩選值的範圍,包括結束點。 例如,Between #2/2/2006# 與 #2/4/2006# 等同 >於 =#2/2/2006# 與 <=#2/4/2006# 。
包含落在某範圍以外的值 <#2/2/2006# 或 >#2/4/2006# 傳回 2006 年 2 月 2 日之前或 2006 年 2 月 4 日之後發生交易的記錄。
包含兩個值中的一個,例如 2/2/2006 或 2/3/2006 #2/2/2006# or #2/3/2006# 傳回 2006 年 2 月 2 日或 2006 年 2 月 3 日發生交易的記錄。
包含多重值中的一個 In (#2/1/2006#, #3/1/2006#, #4/1/2006#) 傳回 2006 年 2 月 1 日、2006 年 3 月 1 日或 2006 年 4 月 1 日發生交易的記錄。
包含落在特定月份中的日期 (不論年份),例如 12 月 DatePart("m", [SalesDate]) = 12 傳回任一年 12 月發生交易的記錄。
包含落在特定季度中的日期 (不論年份),例如第一季 DatePart("q", [SalesDate]) = 1 傳回任一年第一季發生交易的記錄。
包含今天的日期 Date() 傳回目前日期發生交易的記錄。 如果今天的日期是 2/2/2006,會顯示 [OrderDate] 欄位設為 [Feb 2, 2006] 的記錄。
包含昨天的日期 Date()-1 傳回目前日期的前一天發生交易的記錄。 如果今天的日期是 2/2/2006,會顯示 2006 年 2 月 1 日的記錄。
包含明天的日期 Date() + 1 傳回目前日期的後一天發生交易的記錄。 如果今天的日期是 2/2/2006,會顯示 2006 年 2 月 3 日的記錄。
包含落在本週的日期 DatePart("ww", [SalesDate]) = DatePart("ww", Date()) and Year( [SalesDate]) = Year(Date()) 傳回本週發生交易的記錄。 一週從星期日開始,並在星期六結束。
包含落在上週的日期 Year([SalesDate])* 53 + DatePart("ww", [SalesDate]) = Year(Date())* 53 + DatePart("ww", Date()) - 1 傳回上週發生交易的記錄。 一週從星期日開始,並在星期六結束。
包含落在下週的日期 Year([SalesDate])* 53+DatePart("ww", [SalesDate]) = Year(Date())* 53+DatePart("ww", Date()) + 1 傳回下週將發生交易的記錄。 一週從星期日開始,並在星期六結束。
包含落在前 7 天內的日期 Between Date() and Date()-6 傳回前 7 天發生交易的記錄。 如果今天的日期是 2/2/2006,會顯示 2006 年 1 月 24 日到 2006 年 2 月 2 日之間的記錄。
包含屬於本月的日期 Year([SalesDate]) = Year(Now()) And Month([SalesDate]) = Month(Now()) 傳回本月的記錄。 如果今天的日期是 2/2/2006,會顯示 2006 年 2 月的記錄。
包含屬於上個月的日期 Year([SalesDate])* 12 + DatePart("m", [SalesDate]) = Year(Date())* 12 + DatePart("m", Date()) - 1 傳回上個月的記錄。 如果今天的日期是 2/2/2006,會顯示 2006 年 1 月的記錄。
包含屬於下個月的日期 Year([SalesDate])* 12 + DatePart("m", [SalesDate]) = Year(Date())* 12 + DatePart("m", Date()) + 1 傳回下個月的記錄。 如果今天的日期是 2/2/2006,會顯示 2006 年 3 月的記錄。
包含落在前 30 或 31 天內的日期 Between Date( ) And DateAdd("M", -1, Date( )) 一個月內的銷售記錄。 如果今天的日期是 2/2/2006,會顯示 2006 年 1 月 2 日 到 2006 年 2 月 2 日之間的記錄。
包含屬於本季的日期 Year([SalesDate]) = Year(Now()) And DatePart("q", Date()) = DatePart("q", Now()) 傳回目前這一季的記錄。 如果今天的日期是 2/2/2006,會顯示 2006 年第一季的記錄。
包含屬於上一季的日期 Year([SalesDate])*4+DatePart("q",[SalesDate]) = Year(Date())*4+DatePart("q",Date())- 1 傳回上一季的記錄。 如果今天的日期是 2/2/2006,會顯示 2005 年最後一季的記錄。
包含屬於下一季的日期 Year([SalesDate])*4+DatePart("q",[SalesDate]) = Year(Date())*4+DatePart("q",Date())+1 傳回下一季的記錄。 如果今天的日期是 2/2/2006,會顯示 2006 年第二季的記錄。
包含落在今年的日期 Year([SalesDate]) = Year(Date()) 傳回今年的記錄。 如果今天的日期是 2/2/2006,會顯示 2006 年的記錄。
包含屬於前一年的日期 Year([SalesDate]) = Year(Date()) - 1 傳回去年發生交易的記錄。 如果今天的日期是 2/2/2006,會顯示 2005 年的記錄。
包含屬於明年的日期 Year([SalesDate]) = Year(Date()) + 1 傳回明年日期發生交易的記錄。 如果今天的日期是 2/2/2006,會顯示 2007 年的記錄。
包含落在 1 月 1 日到今天之間的日期 (即年初至今的記錄) 年份 ([銷售日期]) = 年份 (日期 () ) 與月份 ([銷售日期]) <= 月 (日期 () ) 與日期 ([銷售日期]) <= () ) (日期 傳回落在今年 1 月 1 日到今天之間發生交易的記錄。 如果今天的日期是 2/2/2006,會顯示 2006 年 1 月 1 日到 2006 年 2 月 2 日之間的記錄。
包含過去的日期 < 日期 () 傳回今天之前發生交易的記錄。
包含未來發生的日期 > 日期 () 傳回今日之後將發生交易的記錄。
篩選出 Null 值 (即缺少值) Is Null 傳回缺少交易日期的記錄。
篩選出非 Null 值 Is Not Null 傳回已知交易日期的記錄。

適用於是/否欄位的準則

舉例來說,你的 Customers 表格有一個名為 Active(有效)的 Yes/No 欄位,用來表示客戶的帳戶目前是否仍在使用中。 下表顯示如何評估在 [是/否] 欄位的 [準則] 資料列中所輸入的值。

欄位值 結果
是、True、1 或 -1 針對 [是] 值進行測試。 當您輸入值 1 或 -1 之後,在 [準則] 資料列中會轉換為 [True]。
否、False 或 0 針對 [否] 值進行測試。 當您輸入值 1 之後,會在 [準則] 資料列中轉換為 [否]。
沒有值 (null) 未測試
1、-1 或 0 以外的任何數字 如果這是欄位中唯一的準則值,則沒有結果
[是]、[否]、[True] 或 [False] 以外的任何字元字串 資料類型不相符的錯誤導致查詢無法執行

適用於其他欄位的準則

附屬設施Criteria 列中,輸入 Is Null 以包含不包含任何附件的紀錄。 輸入 Is Not Null,加入包含附件的記錄。

查閱欄位 查閱欄位有兩種類型:一種是用於查閱位於現有資料來源中的值 (藉由使用外部索引鍵),另一種是根據查閱欄位建立時所指定之值的清單。

根據指定值清單的查閱欄位屬於「文字」資料類型,且有效準則與其他文字欄位相同。

您在以來自現有資料來源的值為基礎的查閱欄位中可使用的準則,取決於外部索引鍵的資料類型,而非正在查閱之資料的資料類型。 例如,您可能有顯示員工名稱的查閱欄位,卻是使用 [數字] 資料類型的外部索引鍵。 因為欄位儲存的是數字而非文字,所以你使用適用於數字的標準;也就是說, >2.

如果您不知道外部索引鍵的資料類型,可以在 [設計檢視] 中檢查來源資料表來判定欄位的資料類型。 步驟如下:

  1. 在 [瀏覽窗格] 中找出來源資料表。

  2. 以下列任一方式,在 [設計檢視] 中開啟資料表:

    • 按一下資料表,然後按 CTRL+ENTER
    • 以滑鼠右鍵按一下資料表,然後按一下 [設計檢視]
  3. 每個欄位的資料類型會列在資料表設計格線的 [資料類型] 資料行中。

多值場 多值欄位中的資料會以隱藏資料表的列形式儲存,Access 會建立並填充該欄位以表示該欄位。 在查詢的 [設計檢視] 中,它是利用可展開的欄位在 [欄位清單] 中表示。 若要使用多重值欄位的準則,請為隱藏資料表的單一資料列提供準則。 方法如下:

  1. 建立含有多重值欄位的查詢,並在 [設計檢視] 中開啟它。
  2. 透過點擊旁邊的加號符號 (+) 來展開多值欄位——如果欄位已經展開,則為負符號 (-) 。 就在欄位名稱下方,您會看到代表多重值欄位之單一值的欄位。 此欄位會與多重值欄位具有相同的名稱,但附加字串 .Value
  3. 拖曳多重值欄位及其單一值欄位,以區隔設計格線中的資料行。 如果只想在結果中看到完整的多重值欄位,請清除單一值欄位的 [顯示] 核取方塊。
  4. 在單一值欄位的 [準則] 資料列中輸入準則,使用適用於值所表示之任何資料類型的準則。
  5. 系統隨即會使用您提供的準則,個別評估多重值欄位中的每個值。 例如,您可能有儲存數字清單的多重值欄位。 如果你提供標準 >5 和 <3,任何至少有一個值大於 5 有一個值小於 3 的紀錄都會匹配。

另請參閱

查詢簡介

建立簡單的選取查詢