Access 关于查询中的表达式 (ADP)

来源:互联网 时间:2016-01-03

表达式概述

在查询中任何用到列名的地方都可以使用表达式。表达式可用以计算显示值、作为搜索条件的一部分、或合并数据列的内容。一个表达式可以由数值计算或字符串组成,也可以包含列名、文字、运算符及函数的任何组合。

在查询中使用表达式的一些示例包括:

  • 在“产品”表中,显示比零售价低 10% 的折价。
  • 只显示电话号码的前三位数字 — 区号。
  • 以 last_name, first_name 的格式显示雇员名字。
  • 连接两张表(“订单”表和“产品”表),并按总价(定货数量乘以产品价格)排序查询。
  • >在“订单”表中,复制并删除所有一年前发出的订单。

表达式结构与表达式示例

表达式的一般创建准则

表达式可以包含列名、原义字符、运算符或函数的任意组合。在将这些元素组合成表达式时应遵循下列准则:

  • 通过键入列名来引用列。如果查询使用多个表并且如果使用不唯一的列名,那么必须给列名添加表名和句号。下面的示例显示列名job_id及其所在的表名employee

    employee.job_id

  • 用单引号括起原义文字;数字不必用引号括起来。

    注释“查询设计器”可以接受双引号中的词,但对其所作的解释可能与预期的有所不同。在 Microsoft Access 项目中,“查询设计器”总是将双引号解释为数据库对象分隔符。

  • 对于数字可使用标准数学运算符,对于合并字符串可使用连接运算符。
  • 用括号来建立运算符优先级。
  • 如果用到了函数,请对传递给函数的参数使用这些相同的准则。也就是说,用列名引用列、用单引号括起原义文字,等等。
  • 如果将列名当作函数参数传递,则要确保该列的数据类型与函数参数的类型一致。
  • 可以包含在表达式中返回小数位数值的用户定义函数。

表达式示例

下表列出在查询中使用表达式的示例。

SELECT (price * .9)

FROM products

显示打折价格(价格列下调 10% 后的结果)。

SELECT (lname + ', ' + fname)

FROM employee

显示用逗号把姓与名列相连接后的结果。

SELECT sales.qty, titles.price

FROM sales INNER JOIN titles ON

sales.title_id = titles.title_id

ORDER BY

(sales.qty * titles.price)

联接两个表之后,按订单的总值(数量乘以价格)对结果集进行排序。

SELECT au_lname, au_fname

FROM authors

WHERE

(SUBSTRING(phone, 1, 3) = '415')

显示区域代码为 San Francisco 地区的作者。

SELECT ord_num, ord_date

FROM sales

WHERE

(ord_date >=

DATEADD(day, -10, GETDATE()))

sales表中查找在近 10 天内制作的表。当天的日期由 GETDATE(?) 函数返回。

表达式结果

用于表达式的运算符

可以使用多种运算符来构造查询的表达式,包括数学和文本运算符。

数学运算符

下表列出了可用于构造表达式的数学运算符。

+、-

单运算符正、负号

+

加法

-

减法

*

乘法

/

除法

运算符含义

 

注释可以使用其他可用的运算符,如“%”运算符来确定算术运算中的模数或余数。有关模数算术运算符的详细信息,请参阅 Microsoft SQL Server 文档。

如果在一个表达式中有多个数学运算符,则“查询设计器”按照如下所示的运算符优先级处理表达式。若要改写默认的优先级,可在要优先计算的表达式前后加上括号。如果表达式中有多个相同优先级的运算符,则按照从左向右的次序计算运算符。

  1. 单运算符 + 号和 - 号
  2. * 和 /
  3. + 和 -

文本运算符

可对文本执行下列操作之一:连接或链接字符串。可以使用单个运算符连接字符串并执行其他运算(如删除多余的空格)。若要连接字符串,可以在“网格”窗格中使用“+”运算符。

表达式的预定义变量

在表达式中,除了使用列名、文字、运算符和函数外,还可使用定义过含义或值的预定义变量。例如,可用预定义变量显示当前用户的用户名,还可用于搜索包含空值 (Null) 的数据列。

下面的列表包含预定义变量的示例。

CURRENT_USER

当前用户的用户名

 

安全性使用此功能时要格外小心。其他用户可能看到敏感信息或机密信息。

 

UPDATE accountsSET salesperson = CURRENT_USERWHERE region = 'NW'

更改在当前用户名称的西北地区的所有帐户的salesperson列。

NULL

空值 (Null),用于搜索表达式

IS NULL 和

IS NOT NULL

SELECT emp_id, lname, fname, minitFROM employeeWHERE minit IS NULL

查找名称中没有中间名首字母的作者。

注释关键字 IS 是与 Null 一起使用的特殊运算符。

预定义变量说明示例

相关阅读:
Top