查询条件示例

Access > Access 基础知识

 

查询条件示例

blueup_CLV全部显示

bluedrop_CLV全部隐藏

若要基于字段中的值来限制查询的结果,则可使用查询条件。查询条件是一个表达式,Access 将它与查询字段值进行比较以确定是否包括含有每个值的记录。例如,= "Chicago" 是一个表达式,Access 可将它与查询中的文本字段的值进行比较。如果给定记录中该字段的值为 "Chicago",则 Access 会在查询结果中包含此记录。

本主题列出了多个查询条件示例。本文假设您熟悉如何设计简单的选择查询。

若要了解有关查询的详细信息,请参阅查询简介一文。

本主题内容


hrefIcon_ZA10069439 概述

hrefIcon_ZA10069439 文本、备注和超链接字段的条件

hrefIcon_ZA10069439 数字、货币和自动编号字段的条件

hrefIcon_ZA10069439 日期/时间字段的条件

hrefIcon_ZA10069439 其他字段的条件


概述

条件与公式类似,它是一个可能包含字段引用、运算符 (运算符:一个标记或符号,指定表达式内执行的计算的类型。有数学、比较、逻辑和引用运算符等。)常量 (常量:不进行计算的值,因此也不会发生变化。例如,数字 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())

如果您需要指定更多备选条件,请使用“或”行下面的行。

在继续这些示例之前,请注意下列几点:

如果条件是临时的或者经常更改,则可以筛选查询结果,而不是频繁修改查询条件。筛选器会更改查询结果,而不会更改查询设计。有关筛选器的详细信息,请参阅“请参阅”部分。
如果条件字段不变,但您要使用的值频繁更改,则可以创建参数查询。在运行参数查询时,该查询会要求您输入值,然后使用您输入的值创建查询条件。有关创建要求输入值的查询的详细信息,请参阅“请参阅”部分。

文本、备注和超链接字段的条件

下面的示例针对某个查询中的“国家/地区”字段,该查询基于一个存储联系人信息的表。条件是在设计网格中该字段的“条件”行中指定的。

国家/地区条件

若要包含满足下面条件的记录

使用此条件

查询结果

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

"China"

返回“国家/地区”字段设置为“China”的记录。

不匹配某个值,如“Mexico”

Not "Mexico"

返回“国家/地区”字段设置为“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)值的记录。例如,提供给另一个部门的销售记录可能在“国家地区”字段中包含空值。

不包含零长度字符串

Not ""

返回“国家/地区”字段含有非空值的记录。

包含 Null 值或零长度字符串

"" Or Is Null

返回该字段中没有值或者该字段设置为空值的记录。

不为空

Is Not Null And Not ""

返回“国家/地区”字段含有非空、非 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)的记录。

 注释    字符 ?_ 在表达式中使用时表示单个字符,这些字符也称为通配符。  字符 _ 不能在包含 ? 字符的表达式中使用,也不能在包含 * 通配符的表达式中使用。您可以在同时包含 % 通配符的表达式中使用通配符 _

超链接条件稍微有点复杂

默认情况下,为超链接字段指定的条件将应用于该字段值的显示文本部分,而非链接目标。若要为该值的目标统一资源定位器 (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#

返回交易发生在 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", [销售日期]) = 12

返回交易发生在任何一年的 12 月的记录。

包含特定季度(与年份无关)内的某个日期,如一季度

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

返回交易发生在任一年的第一季度的记录。

包含今天的日期

Date()

返回交易发生在当天的记录。如果当天日期为 2/2/2006,则您将看到“订购日期”字段设置为 2006 年 2 月 2 日的记录。

包含昨天的日期

Date()-1

返回交易发生在当天的前一天的记录。如果当天日期为 2/2/2006,则您将看到 2006 年 2 月 1 日的记录。

包含明天的日期

Date() + 1

返回交易发生在当天的后一天的记录。如果当天日期为 2/2/2006,则您将看到 2006 年 2 月 3 日的记录。

包含当前星期内的日期

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

返回交易发生在当前星期内的记录。一个星期从星期日开始到星期六结束。

包含上一星期内的日期

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

返回交易发生在上个星期的记录。一个星期从星期日开始到星期六结束。

包含下个星期内的日期

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

返回交易将在下个星期发生的记录。一个星期从星期日开始到星期六结束。

包含前 7 天内的日期

Between Date() and Date()-6

返回交易发生在前 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

返回交易发生在去年的记录。如果当天日期为 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 日这段时间的记录。

包含发生在过去的日期

< Date()

返回交易发生在当天之前的记录。

包含发生在将来的日期

> Date()

返回交易将在当天之后发生的记录。

筛选 Null 值(即缺少值)

Is Null

返回缺少交易日期的记录。

筛选非 Null 值

Is Not Null

返回交易日期已知的记录。

其他字段的条件

“是/否”字段  在“条件”行中,键入以包含复选框已选中的记录。键入“否”以包含复选框未选中的记录。

附件  在“条件”行中,键入 Is Null 以包含不含任何附件的记录。键入 Is Not Null 以包含含有附件的记录。

“查阅”字段  有两种类型的“查阅”字段:在现有数据源中查阅值的“查阅”字段(使用外键)以及基于创建“查阅”字段时指定的值列表的“查阅”字段。

基于指定值的列表的“查阅”字段为文本数据类型,并且有效条件与其他文本字段相同。

可在基于现有数据源值的“查阅”字段中使用的条件取决于外键的数据类型,而不是所查阅的数据的数据类型。例如,您可能有一个显示雇员姓名的“查阅”字段,但是该字段使用数字数据类型的外键。因为该字段存储数字而不是文本,所以应使用对数字起作用的条件;即 >2

如果不知道外键的数据类型,则可以在设计视图中查看源表以确定字段的数据类型。要执行此操作:

1.“导航窗格”中找到源表。
2.使用下列方法之一在设计视图中打开该表:
单击该表,然后按 Ctrl+Enter
右键单击该表,然后单击“设计视图”
3.在表设计网格的“数据类型”列中列出了每个字段的数据类型。

多值字段  多值字段中的数据作为行存储在隐藏表中,该表由 Office Access 2007 创建并填充以用于表示该字段。在查询设计视图中,它是通过使用可展开字段在“字段列表”中表示的。若要对多值字段使用条件,应为隐藏表中的单个行提供条件。要执行此操作:

1.创建一个包含多值字段的查询,并在设计视图中打开它。
2.单击多值字段旁边的加号 (+) 将其展开(如果该字段已经展开,则此符号为减号 (-))。  就在该字段的名称下面,您将看到一个代表该多值字段的某一个值的字段。此字段将与多值字段同名,但后面跟有字符串“.Value”
3.将多值字段及其单值字段拖至设计网格中单独的列中。如果想在结果中只看到完整的多值字段,请清除对应单值字段的“显示”复选框。
4.在单值字段的“条件”行中键入您的条件,使用适合于这些值所表示的数据类型的条件。
5.多值字段中的每个值将使用您提供的条件单独求值。例如,您可能有一个存储了一系列数字的多值字段。如果提供条件 >5 AND <3,则任何至少有一个值大于 5 一个值小于 3 的记录都将匹配。