当前位置:文档之家› ACCESS数据库查询条件示例

ACCESS数据库查询条件示例

ACCESS数据库查询条件示例
ACCESS数据库查询条件示例

查询条件示例

全部显示

查询条件是一种规则,用来标识要包含在查询结果中的记录。并非所有查询都必须包含条件,但是如果您没有兴趣查看存储在基本记录源中的所有记录,则在设计查询时必须在其中添加条件。

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

若要了解更多有关创建选择查询的内容,请参阅文章创建简单的选择查询。

本主题内容

?查询条件简介

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

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

?日期/时间字段的条件

?其他字段的条件

查询条件简介

条件类似于公式- 它是可能由字段引用、运算符和常量组成的字符串。在Microsoft Office Access 2007 中,查询条件也称为表达式。

下表显示了某些示例条件并说明它们如何工作。

条件说明

>25 and <50 此条件适用于数字字段,如“价格”或“库存量”。它仅包含这样的记

录:其中“价格”或“库存量”字段包含大于25 且小于50 的值。

DateDiff ("yyyy", [出生日期], Date()) > 30 此条件适用于日期/时间字段,如“出生日期”。只有某人的出生日期与今天的日期之间相差的年数大于30 的记录才会包含在查询结果中。

Is Null 此条件可用于任何类型的字段,以显示字段值为Null 的记录。

如您所见,根据条件所应用到的字段的数据类型以及您的具体要求,各个条件之间看上去可能有很大的不同。某些条件很简单,只使用基本运算符和常量。而有些条件很复杂,不仅使用函数、特殊运算符,还包含字段引用。

本主题按数据类型列出了多个常用条件。如果本主题中提供的示例不能满足您的特定需求,则您可能需要自己编写条件。为此,您必须首先熟悉函数、运算符、特殊字符的完整列表以及用于引用字段和文字的表达式的语法。有关详细信息可以在请参阅一节列出的文章中找到。

在这里,您将了解在哪里添加条件以及如何添加。若要向查询添加条件,必须在设计视图中打开查询。然后标识要为其指定条件的字段。如果设计网格中尚无该字段,则您必须自行添加,方法是将它从查询设计窗口拖动到字段网格,或者双击该字段(双击字段会自动将它添加到字段网格中的下一个空列)。最后,在“条件”行中键入条件。

您在“条件”行中为不同字段指定的条件使用AND 运算符组合在一起。换言之,在“城市”和“出生日期”字段中指定的条件将如下方式进行解释:

城市= "芝加哥" AND 出生日期< DateAdd("yyyy", -40, Date())

“城市”和“出生日期”字段都包括条件。

只有“城市”字段的值为“芝加哥”的记录将满足此条件。

只有至少为40 岁的那些人的记录将满足此条件。

只有同时满足这两个条件的记录将包括在结果中。

如果您只希望满足这两个条件中的一个条件该怎么办呢?换言之,如果您有二选一条件,该如何输入它们呢?

如果您有二选一条件(即两组独立的条件,只要满足其中一组即可),则可以同时使用设计网格中的“条件”和“或”行。

“城市”条件是在“条件”行中指定的。

“出生日期”条件是在“或”行中指定的。

“条件”和“或”行中指定的条件是使用OR 运算符组合的,如下所示:

城市= "芝加哥" OR 出生日期< DateAdd("yyyy", -40, Date())

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

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

?如果条件是临时的或者经常更改,则可以筛选查询结果,而不是频繁修改

查询条件。筛选器是更改查询结果但不更改查询设计的临时条件。有关筛选器的详细信息,请参阅文章筛选:限制视图中的记录数。

?如果条件字段不变,但是您感兴趣的值频繁更改,则可以创建参数查询。

参数查询会提示用户提供字段值,然后使用这些值创建查询条件。有关参数查询的详细信息,请参阅文章在查询和报表中使用参数。

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

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

为超链接字段指定的条件默认情况下应用于该字段值的显示文本部分。若要为该值的目标统一资源定位器(URL) 部分指定条件,请使用“HyperlinkPart”表达式。此表达式的语法如下:HyperlinkPart([Table1].[Field1],1) =

"https://www.doczj.com/doc/b14304054.html,/",其中Table1 是包含超链接字段的表的名称,Field1 是超链接字段,https://www.doczj.com/doc/b14304054.html, 是要匹配的URL。

若要包含满足

下面条件的记

使用此条件查询结果

完全匹配一个

值,如“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)的记

录。

注释字符? 和_ 在表达式中使用时表

示单个字符,这些字符也称为通配符。字符_

不能在包含? 字符的表达式中使用,也不能

在包含* 通配符的表达式中使用。您可以在

同时包含% 通配符的表达式中使用通配符

_。

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

下面的示例针对某个查询中的“单价”字段,该查询基于一个存储产品信息的表。条件是在查询设计网格中该字段的“条件”行中指定的。

若要包含满足

下面条件的记

使用此条件查询结果

完全匹配一个

值,如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 月3 日的记

录。

包含某个特定日期(如

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())-

返回上个季度的记录。如

果当天日期为2/2/2006,

1 则您将看到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 的记录都将匹配。

另请参阅

?Access 通配符参考

?表达式的示例

?查找、隐藏或删除重复数据

?查找具有最近或最早日期的记录

?查找组或字段中包含上限值和下限值的记录?函数(按字母顺序排列)

相关主题
文本预览
相关文档 最新文档