查詢條件的範例

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

若要將準則新增至 Access 查詢,請在 [設計檢視] 中開啟查詢,並識別您要指定準則的欄位 (欄)。如果欄位不在設計格線中,請按兩下欄位以將其新增至設計格線,然後在該欄位的 [準則] 列中輸入準則。如果您不確定該如何進行,請參閱查詢簡介

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

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

本主題內容

查詢準則簡介

適用於文字、備忘和超連結欄位的準則

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

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

適用於是/否欄位的準則

適用於其他欄位的準則

查詢準則簡介

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

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

準則

描述

>25 and <50

這個準則適用於 [數字] 欄位,例如 [Price] 或 [UnitsInStock]。它只包含其 [Price] 或 [UnitsInStock] 欄位值大於 25 並小於 50 的記錄。

DateDiff ("yyyy", [BirthDate], Date()) > 30

這個準則適用於 [日期/時間] 欄位,例如 [BirthDate]。查詢結果只會包含人員的生日與今天日期之間的年數大於 30 的記錄。

Is Null

這個準則可以套用至任何類型的欄位,以顯示欄位值為 Null 的記錄。

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

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

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

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

City = "Chicago" AND BirthDate < DateAdd (" yyyy ", -40, Date())

縣/市及生日的準則

1. [City] 和 [BirthDate] 欄位包含準則。

2. 只有 [City] 欄位值為 Chicago 的記錄才會滿足此準則。

3. 只有年齡至少為 40 歲之人的記錄才會滿足此準則。

4. 只有符合上述兩個準則的記錄才會包含在結果中。

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

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

替代準則

1. [City] 準則是在 [準則] 資料列中指定。

2. [BirthDate] 準則是在 [or] 資料列中指定。

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

縣/市 = "台北" OR 生日 < DateAdd (" yyyy ", -40, Date())

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

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

  • 如果準則是暫時的或經常變更,您可以篩選查詢結果,而非經常修改查詢準則。篩選是會變更查詢結果的暫時準則,不需要改變查詢的設計。如需有關篩選的詳細資訊,請參閱篩選:限制檢視中的記錄數目一文。

  • 如果準則欄位不變,但您要使用的值卻經常在變,您可建立參數查詢。參數查詢會提示使用者輸入欄位值,然後使用這些值來建立查詢準則。如需有關參數查詢的詳細資訊,請參閱在查詢和報表中使用參數一文。

適用於文字、備忘和超連結欄位的準則

附註: 自 Access 2013 起,[文字] 欄位已命名為 [簡短文字],而 [備忘] 欄位已命名為 [長文字] 。

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

CountryRegion 準則

依預設,您為 [超連結] 欄位指定的準則會套用至欄位值的顯示文字部分。若要為值的目的地統一資源定位器 (URL) 部分指定準則,請使用 HyperlinkPart 運算式。這個運算式的語法如下:HyperlinkPart([Table1].[Field1],1) = "http://www.microsoft.com/",其中 Table1 是含有超連結欄位的資料表名稱,Field 1 是超連結欄位,而 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"

傳回所有國家/地區中,始於 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" 的所有國家/地區的記錄。

符合長度要求

Len([CountryRegion]) > 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 and <99.99
-或-
Between 50 and 100

傳回單價介於 (不含) $49.99 和 $99.99 之間的記錄。

包含落於某範圍之外的值

<50 or >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# and <#2/4/2006#

傳回 2006 年 2 月 2 日到 2006 年 2 月 4 日之間發生交易的記錄。

您也可以使用 Between 運算子來篩選值的範圍,包括結束點。例如,Between #2/2/2006# and #2/4/2006# 與 >=#2/2/2006# and <=#2/4/2006# 是一樣的。

包含落在某範圍以外的值

<#2/2/2006# or >#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 日到今天之間的日期 (即年初至今的記錄)

Year([SalesDate]) = Year(Date()) and Month([SalesDate]) <= Month(Date()) and Day([SalesDate]) <= Day (Date())

傳回落在今年 1 月 1 日到今天之間發生交易的記錄。如果今天的日期是 2/2/2006,會顯示 2006 年 1 月 1 日到 2006 年 2 月 2 日之間的記錄。

包含過去的日期

< Date()

傳回今天之前發生交易的記錄。

包含未來發生的日期

> Date()

傳回今日之後將發生交易的記錄。

篩選出 Null 值 (即缺少值)

Is Null

傳回缺少交易日期的記錄。

篩選出非 Null 值

Is Not Null

傳回已知交易日期的記錄。

適用於是/否欄位的準則

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

欄位值

結果

是、True、1 或 -1

針對 [是] 值進行測試。當您輸入值 1 或 -1 之後,在 [準則] 資料列中會轉換為 [True]。

否、False 或 0

針對 [否] 值進行測試。當您輸入值 1 之後,會在 [準則] 資料列中轉換為 [否]。

沒有值 (null)

未測試

1、-1 或 0 以外的任何數字

如果這是欄位中唯一的準則值,則沒有結果

[是]、[否]、[True] 或 [False] 以外的任何字元字串

資料類型不相符的錯誤導致查詢無法執行

適用於其他欄位的準則

附件    在 [準則] 資料列中,輸入 Is Null 來加入不含任何附件的記錄。輸入 Is Not Null 來加入包含附件的記錄。

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

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

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

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

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

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

    • 按一下資料表,然後按 CTRL+ENTER

    • 以滑鼠右鍵按一下資料表,然後按一下 [設計檢視]。

  3. 每個欄位的資料類型會列在資料表設計格線的 [資料類型] 資料行中。

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

  1. 建立含有多重值欄位的查詢,並在 [設計檢視] 中開啟它。

  2. 按一下多重值欄位旁邊的加號 (+) 來展開它;如果欄位已展開,則為減號 (-)。就在欄位名稱下方,您會看到代表多重值欄位之單一值的欄位。此欄位會與多重值欄位具有相同的名稱,但附加字串 .Value

  3. 拖曳多重值欄位及其單一值欄位,以區隔設計格線中的資料行。如果只想在結果中看到完整的多重值欄位,請清除單一值欄位的 [顯示] 核取方塊。

  4. 在單一值欄位的 [準則] 資料列中輸入準則,使用適用於值所表示之任何資料類型的準則。

  5. 系統隨即會使用您提供的準則,個別評估多重值欄位中的每個值。例如,您可能有儲存數字清單的多重值欄位。如果您提供準則 >5 AND <3,那麼至少有一個值大於 5 一個值小於 3 的任何記錄皆符合該準則。

請參閱

查詢簡介

建立簡單的選取查詢

擴展您的技能
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×