查詢條件示例

此頁沒有內容條目
內容

Access > Access 基礎知識

 

查詢條件示例

blueup_CLV全部顯示

bluedrop_CLV全部隱藏

若要基于字段中的值來限制查詢的結果,則可使用查詢條件。查詢條件是一個表達式,Access 將它與查詢字段值進行比較以確定是否包括含有每個值的記錄。例如,= "Chicago" 是一個表達式,Access 可將它與查詢中的文本字段的值進行比較。如果給定記錄中該字段的值為 "Chicago",則 Access 會在查詢結果中包含此記錄。

本主題列出了多個查詢條件示例。本文假設您熟悉如何設計簡單的選擇查詢。

若要了解有關查詢的詳細信息,請參閱查詢簡介一文。

本主題內容


hrefIcon_ZA10069439 概述

hrefIcon_ZA10069439 文本、備注和超鏈接字段的條件

hrefIcon_ZA10069439 數字、貨幣和自動編號字段的條件

hrefIcon_ZA10069439 日期/時間字段的條件

hrefIcon_ZA10069439 其他字段的條件


概述

條件與公式類似,它是一個可能包含字段引用、運算符 (運算符:一個標記或符號,指定表達式內執(zhí)行的計算的類型。有數學、比較、邏輯和引用運算符等。)常量 (常量:不進行計算的值,因此也不會發(fā)生變化。例如,數字 210 以及文本“每季度收入”都是常量。表達式以及表達式產生的值都不是常量。)的字符串。查詢條件也稱為表達式。

下表顯示了某些示例條件并說明它們如何工作。

條件

說明

>25 and <50

此條件適用于數字字段,如“價格”或“庫存量”。它僅包含這樣的記錄:其中“價格”或“庫存量”字段包含大于 25 且小于 50 的值。

DateDiff ("yyyy", [出生日期], Date()) > 30

此條件適用于日期/時間字段,如“出生日期”。只有某人的出生日期與今天的日期之間相差的年數大于 30 的記錄才會包含在查詢結果中。

Is Null

此條件可用于任何類型的字段,以顯示字段值為 Null 的記錄。

各個條件之間看上去可能有很大的不同。某些條件很簡單,它們只使用基本運算符(如“<”)和常量(如“50”)。而有些條件很復雜,它們使用函數(如“DateDiff”)或字段引用(如“[出生日期]”)。

本主題提供了一些常用條件的示例,并按這些條件所應用于的數據類型對其進行了分組。您可以將本主題中提供的條件示例作為起點,開始著手編寫自己的條件。此外,您可能需要熟悉函數、運算符、特殊字符和表達式的語法。有關詳細信息,請參閱“請參閱”部分中列出的文章。

若要向查詢添加條件,您必須在設計視圖中打開查詢。然后標識要為其指定條件的字段。如果要為其指定條件的字段尚未包含在設計網格中,則您可以添加該字段,方法是將該字段從查詢設計窗口拖動到設計網格,或者雙擊該字段。如果所需字段包含在設計網格中,則在“條件”行中鍵入該字段的條件。

“條件”行中所指定的所有條件是組合在一起的

您在“條件”行中為不同字段指定的條件使用 AND 運算符組合在一起。例如,可以為“城市”字段指定條件 ="福州",并為“出生日期”字段指定條件 < DateAdd("yyyy", -40, Date())。這兩個條件組合在一起進行解釋,如下所示:

城市 = "福州" AND 出生日期 < DateAdd("yyyy", -40, Date())


城市和出生日期的條件

標注 1 “城市”和“出生日期”字段都包括條件。

標注 2 只有“城市”字段的值為“福州”的記錄將滿足此條件。

標注 3 只有至少為 40 歲的那些人的記錄將滿足此條件。

標注 4 只有同時滿足這兩個條件的記錄才會包括在結果中。


使用“或”行來指定替代條件

如果您有二選一條件(即兩組獨立的條件,只要滿足其中一組即可),則可以同時使用設計網格中的“條件”“或”行。


備選條件

標注 1 “城市”條件是在“條件”行中指定的。

標注 2 “出生日期”條件是在“或”行中指定的。


“條件”“或”行中指定的條件是使用 OR 運算符組合的,如下所示:

城市 = "福州" OR 出生日期 < DateAdd("yyyy", -40, Date())

如果您需要指定更多備選條件,請使用“或”行下面的行。

在繼續(xù)這些示例之前,請注意下列幾點:

如果條件是臨時的或者經常更改,則可以篩選查詢結果,而不是頻繁修改查詢條件。篩選器會更改查詢結果,而不會更改查詢設計。有關篩選器的詳細信息,請參閱“請參閱”部分。
如果條件字段不變,但您要使用的值頻繁更改,則可以創(chuàng)建參數查詢。在運行參數查詢時,該查詢會要求您輸入值,然后使用您輸入的值創(chuàng)建查詢條件。有關創(chuàng)建要求輸入值的查詢的詳細信息,請參閱“請參閱”部分。

文本、備注和超鏈接字段的條件

下面的示例針對某個查詢中的“國家/地區(qū)”字段,該查詢基于一個存儲聯系人信息的表。條件是在設計網格中該字段的“條件”行中指定的。

國家/地區(qū)條件

若要包含滿足下面條件的記錄

使用此條件

查詢結果

完全匹配一個值,如“China”

"China"

返回“國家/地區(qū)”字段設置為“China”的記錄。

不匹配某個值,如“Mexico”

Not "Mexico"

返回“國家/地區(qū)”字段設置為“Mexico”以外的國家/地區(qū)的記錄。

以指定的字符串開頭,如 U

Like U*

返回名稱以“U”開頭的所有國家/地區(qū)(如 UK、USA 等等)的記錄。

 注釋    當在表達式中使用星號 (*) 時,它表示任意字符串 - 它也稱為通配符。  有關此類字符的列表,請參閱文章 ACCESS 通配符參考。

不以指定字符串開頭,如 U

Not Like U*

返回名稱以“U”以外的字符開頭的所有國家/地區(qū)的記錄。

包含指定字符串,如“Korea”

Like "*Korea*"

返回包含字符串“Korea”的所有國家/地區(qū)的記錄。

不包含指定字符串,如“Korea”

Not Like "*Korea*"

返回不包含字符串“Korea”的所有國家/地區(qū)的記錄。

以指定字符串結尾,如“ina”

Like "*ina"

返回名稱以“ina”結尾的所有國家/地區(qū)(如 China 和 Argentina)的記錄。

不以指定字符串結尾,如“ina”

Not Like "*ina"

返回以“ina”結尾的所有國家/地區(qū)(如 China 和 Argentina)之外的記錄。

包含 Null 值(即缺少值)

Is Null

返回該字段中沒有值的記錄。

不包含 Null 值

Is Not Null

返回該字段中不缺少值的記錄。

包含零長度字符串

""(一對引號)

返回該字段設置為空(不是 Null)值的記錄。例如,提供給另一個部門的銷售記錄可能在“國家地區(qū)”字段中包含空值。

不包含零長度字符串

Not ""

返回“國家/地區(qū)”字段含有非空值的記錄。

包含 Null 值或零長度字符串

"" Or Is Null

返回該字段中沒有值或者該字段設置為空值的記錄。

不為空

Is Not Null And Not ""

返回“國家/地區(qū)”字段含有非空、非 Null 值的記錄。

按字母順序排在某個值(如 Mexico)后面

>= "Mexico"

返回從 Mexico 開始一直到字母表結束的所有國家/地區(qū)的記錄。

在指定范圍內,如 A 到 D

Like "[A-D]*"

返回名稱以字母“A”到“D”開頭的國家/地區(qū)的記錄。

匹配兩個值中的任一值,如 USA 或 UK

"USA" Or "UK"

返回對應 USA 和 UK 的記錄。

包含值列表中的任一值

In("France", "China", "Germany", "Japan")

返回對應列表中指定的所有國家/地區(qū)的記錄。

在字段值的特定位置包含某些字符

Right([CountryRegion], 1) = "y"

返回最后一個字母為“y”的所有國家/地區(qū)的記錄。

滿足長度要求

Len([CountryRegion]) > 10

返回名稱長度大于 10 個字符的國家/地區(qū)的記錄。

匹配特定模式

Like "Chi??"

返回名稱為五個字符長并且前三個字符為“Chi”的國家/地區(qū)(如 China 和 Chile)的記錄。

 注釋    字符 ?_ 在表達式中使用時表示單個字符,這些字符也稱為通配符。  字符 _ 不能在包含 ? 字符的表達式中使用,也不能在包含 * 通配符的表達式中使用。您可以在同時包含 % 通配符的表達式中使用通配符 _。

超鏈接條件稍微有點復雜

默認情況下,為超鏈接字段指定的條件將應用于該字段值的顯示文本部分,而非鏈接目標。若要為該值的目標統一資源定位器 (URL) 部分指定條件,請使用“HyperlinkPart”表達式。使用的語法與以下語法類似:HyperlinkPart([Table1].[Field1],1) = "http://www.microsoft.com/",其中 Table1 包含超鏈接字段的表的名稱,Field1 是超鏈接字段,http://www.microsoft.com 是要匹配的 URL。

數字、貨幣和自動編號字段的條件

下面的示例針對某個查詢中的“單價”字段,該查詢基于一個存儲產品信息的表。條件是在查詢設計網格中該字段的“條件”行中指定的。

單價條件

若要包含滿足下面條件的記錄

使用此條件

查詢結果

完全匹配一個值,如 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

返回“單價”字段中未輸入值的記錄。

包含非 Null 值

Is Not Null

返回“單價”字段中不缺少值的記錄。

日期/時間字段的條件

下面的示例針對某個查詢中的“訂購日期”字段,該查詢基于一個存儲訂單信息的表。條件是在查詢設計網格中該字段的“條件”行中指定的。

訂購日期條件

若要包含滿足下面條件的記錄

使用此條件

查詢結果

完全匹配一個值,如 2/2/2006

#2/2/2006#

返回交易發(fā)生在 2006 年 2 月 2 日的記錄。請記住在日期值兩邊括以 # 字符,以使 Access 可區(qū)分日期值和文本字符串。

不匹配某個值,如 2/2/2006

Not #2/2/2006#

返回交易不是發(fā)生在 2006 年 2 月 2 日的記錄。

包含某個特定日期(如 2/2/2006)之前的值

< #2/2/2006#

返回交易發(fā)生在 2006 年 2 月 2 日之前的記錄。

若要查看發(fā)生在該日期或該日期之前的交易,請使用 <= 運算符而不是 < 運算符。

包含某個特定日期(如 2/2/2006)之后的值

> #2/2/2006#

返回交易發(fā)生在 2006 年 2 月 2 日之后的記錄。

若要查看交易發(fā)生在該日期或該日期之后的記錄,請使用 >= 運算符而不是 > 運算符。

包含某個日期范圍之內的值

>#2/2/2006# and <#2/4/2006#

返回交易發(fā)生在 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#

返回交易發(fā)生在 2006 年 2 月 2 日之前或 2006 年 2 月 4 日之后的記錄。

包含兩個值中的任一值,如 2/2/2006 或 2/3/2006

#2/2/2006# or #2/3/2006#

返回交易發(fā)生在 2006 年 2 月 2 日或 2006 年 2 月 3 日的記錄。

包含多個值之一

In (#2/1/2006#, #3/1/2006#, #4/1/2006#)

返回交易發(fā)生在 2006 年 2 月 1 日、2006 年 3 月 1 日或 2006 年 4 月 1 日的記錄。

包含特定月份(與年份無關)內的某個日期,如 12 月

DatePart("m", [銷售日期]) = 12

返回交易發(fā)生在任何一年的 12 月的記錄。

包含特定季度(與年份無關)內的某個日期,如一季度

DatePart("q", [銷售日期]) = 1

返回交易發(fā)生在任一年的第一季度的記錄。

包含今天的日期

Date()

返回交易發(fā)生在當天的記錄。如果當天日期為 2/2/2006,則您將看到“訂購日期”字段設置為 2006 年 2 月 2 日的記錄。

包含昨天的日期

Date()-1

返回交易發(fā)生在當天的前一天的記錄。如果當天日期為 2/2/2006,則您將看到 2006 年 2 月 1 日的記錄。

包含明天的日期

Date() + 1

返回交易發(fā)生在當天的后一天的記錄。如果當天日期為 2/2/2006,則您將看到 2006 年 2 月 3 日的記錄。

包含當前星期內的日期

DatePart("ww", [銷售日期]) = DatePart("ww", Date()) and Year( [銷售日期]) = Year(Date())

返回交易發(fā)生在當前星期內的記錄。一個星期從星期日開始到星期六結束。

包含上一星期內的日期

Year([銷售日期])* 53 + DatePart("ww", [銷售日期]) = Year(Date())* 53 + DatePart("ww", Date()) - 1

返回交易發(fā)生在上個星期的記錄。一個星期從星期日開始到星期六結束。

包含下個星期內的日期

Year([銷售日期])* 53+DatePart("ww", [銷售日期]) = Year(Date())* 53+DatePart("ww", Date()) + 1

返回交易將在下個星期發(fā)生的記錄。一個星期從星期日開始到星期六結束。

包含前 7 天內的日期

Between Date() and Date()-6

返回交易發(fā)生在前 7 天的記錄。如果當天日期為 2/2/2006,則您將看到從 2006 年 1 月 24 日到 2006 年 2 月 2 日這段時間的記錄。

包含屬于當前月的日期

Year([銷售日期]) = Year(Now()) And Month([銷售日期]) = Month(Now())

返回當前月的記錄。如果當天日期為 2/2/2006,則您將看到 2006 年 2 月的記錄。

包含屬于上個月的日期

Year([銷售日期])* 12 + DatePart("m", [銷售日期]) = Year(Date())* 12 + DatePart("m", Date()) - 1

返回上個月的記錄。如果當天日期為 2/2/2006,則您將看到 2006 年 1 月的記錄。

包含屬于下個月的日期

Year([銷售日期])* 12 + DatePart("m", [銷售日期]) = 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([銷售日期]) = Year(Now()) And DatePart("q", Date()) = DatePart("q", Now())

返回當前季度的記錄。如果當天日期為 2/2/2006,則您將看到 2006 年一季度的記錄。

包含屬于上個季度的日期

Year([銷售日期])*4+DatePart("q",[銷售日期]) = Year(Date())*4+DatePart("q",Date())- 1

返回上個季度的記錄。如果當天日期為 2/2/2006,則您將看到 2005 年最后一個季度的記錄。

包含屬于下個季度的日期

Year([銷售日期])*4+DatePart("q",[銷售日期]) = Year(Date())*4+DatePart("q",Date())+1

返回下個季度的記錄。如果當天日期為 2/2/2006,則您將看到 2006 年二季度的記錄。

包含當年內的日期

Year([銷售日期]) = Year(Date())

返回當年的記錄。如果當天日期為 2/2/2006,則您將看到 2006 年的記錄。

包含屬于去年的日期

Year([銷售日期]) = Year(Date()) - 1

返回交易發(fā)生在去年的記錄。如果當天日期為 2/2/2006,則您將看到 2005 年的記錄。

包含屬于明年的日期

Year([銷售日期]) = Year(Date()) + 1

返回交易日期為明年的記錄。如果當天日期為 2/2/2006,則您將看到 2007 年的記錄。

包含介于 1 月 1 日和今天之間的日期(當年到今天為止的記錄)

Year([銷售日期]) = Year(Date()) and Month([銷售日期]) <= Month(Date()) and Day([銷售日期]) <= Day (Date())

返回交易日期介于當年 1 月 1 日到當天之間的記錄。如果當天日期為 2/2/2006,則您將看到從 2006 年 1 月 1 日到 2006 年 2 月 2 日這段時間的記錄。

包含發(fā)生在過去的日期

< Date()

返回交易發(fā)生在當天之前的記錄。

包含發(fā)生在將來的日期

> Date()

返回交易將在當天之后發(fā)生的記錄。

篩選 Null 值(即缺少值)

Is Null

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

篩選非 Null 值

Is Not Null

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

其他字段的條件

“是/否”字段  在“條件”行中,鍵入以包含復選框已選中的記錄。鍵入“否”以包含復選框未選中的記錄。

附件  在“條件”行中,鍵入 Is Null 以包含不含任何附件的記錄。鍵入 Is Not Null 以包含含有附件的記錄。

“查閱”字段  有兩種類型的“查閱”字段:在現有數據源中查閱值的“查閱”字段(使用外鍵)以及基于創(chuàng)建“查閱”字段時指定的值列表的“查閱”字段。

基于指定值的列表的“查閱”字段為文本數據類型,并且有效條件與其他文本字段相同。

可在基于現有數據源值的“查閱”字段中使用的條件取決于外鍵的數據類型,而不是所查閱的數據的數據類型。例如,您可能有一個顯示雇員姓名的“查閱”字段,但是該字段使用數字數據類型的外鍵。因為該字段存儲數字而不是文本,所以應使用對數字起作用的條件;即 >2

如果不知道外鍵的數據類型,則可以在設計視圖中查看源表以確定字段的數據類型。要執(zhí)行此操作:

1.“導航窗格”中找到源表。
2.使用下列方法之一在設計視圖中打開該表:
單擊該表,然后按 Ctrl+Enter
右鍵單擊該表,然后單擊“設計視圖”。
3.在表設計網格的“數據類型”列中列出了每個字段的數據類型。

多值字段  多值字段中的數據作為行存儲在隱藏表中,該表由 Office Access 2007 創(chuàng)建并填充以用于表示該字段。在查詢設計視圖中,它是通過使用可展開字段在“字段列表”中表示的。若要對多值字段使用條件,應為隱藏表中的單個行提供條件。要執(zhí)行此操作:

1.創(chuàng)建一個包含多值字段的查詢,并在設計視圖中打開它。
2.單擊多值字段旁邊的加號 (+) 將其展開(如果該字段已經展開,則此符號為減號 (-))。  就在該字段的名稱下面,您將看到一個代表該多值字段的某一個值的字段。此字段將與多值字段同名,但后面跟有字符串“.Value”。
3.將多值字段及其單值字段拖至設計網格中單獨的列中。如果想在結果中只看到完整的多值字段,請清除對應單值字段的“顯示”復選框。
4.在單值字段的“條件”行中鍵入您的條件,使用適合于這些值所表示的數據類型的條件。
5.多值字段中的每個值將使用您提供的條件單獨求值。例如,您可能有一個存儲了一系列數字的多值字段。如果提供條件 >5 AND <3,則任何至少有一個值大于 5 一個值小于 3 的記錄都將匹配。