Access

本章介绍的是使用Access数据源时,SQL语句支持的常用函数。
内部数据源支持的SQL函数,和Access完全相同。

日期函数

Year

返回给定日期的年份。

例如统计不同年份的销售额:

SELECT Year(日期) AS 年, SUM(数量) AS 数量 FROM {订单} GROUP BY Year(日期)

Month

返回给定日期的月份。

例如统计1999年各月的销售额:

SELECT Month(日期) AS 月, SUM(数量) AS 数量 FROM {订单} WHERE Year(日期) = 1999 GROUP BY Month(日期)

Day

返回给定日期的天

Date

返回系统日期

例如查询当天的订单:

SELECT * FROM {订单} WHERE 日期 = Date()

DatePart

返回给定日期时间的指定部分

语法

DatePart(Interval, date)

Interval: 字符型,表示希望返回的时间部分
Date: 给定的日期值

Interval 包含以下设置:

yyyy 年
q    季度
m    月
y    某年的某一天
d    天
w    工作日
ww   周
h    时
n    分
s    秒

例如统计1999年的各季度每种产品的销售数量:

SELECT 产品, DatePart('q', 日期) AS 季度, SUM(数量) AS 数量 FROM {订单} WHERE Year(日期) = 1999 GROUP BY 产品, DatePart('q', 日期)

DateDiff

计算两个给定日期的间隔。

语法

DateDiff(Interval, Date1, Date2)

Interval:表示时间间隔的类型。

Date1:起始日期

Date2:结束日期

Interval 包含以下设置:

yyyy 年
q    季度
m    月
y    某年的某一天
d    天
w    工作日
ww   周
h    时
n    分
s    秒

例如加载最近两个月内的订单:

SELECT * FROM {订单} WHERE DateDiff('m', 日期, Date()) < 2

DateAdd

为一给定的日期加上给定的时间间隔。

语法

DateAdd(Interval, Number, Date)

Interval:表示时间间隔的类型,可设置的值和DateDiff函数相同。

Number: 表示要加上的时间间隔数量。

Date: 日期值

例如加载未来两个月要发货的订单:

SELECT * FROM {订单} WHERE 发货日期 BETWEEN Date() AND DateAdd('m', 2, Date())

数学函数

Abs

返回数值的绝对值。

Int

返回数值的整数部分。

Round

将数值四舍五入到指定的小数位数。

例如:

SELECT 客户,Count(*) AS 订单数, SUM(数量) AS 数量, Round(SUM(数量 * 单价 * (1 - 折扣)), 2) AS 金额 FROM {订单} GROUP BY 客户

上述语句的金额由数量、单价、折扣计算得出,且保留两位小数。

字符函数

Len

返回字符串的长度。

Mid

返回字符串从指定位置开始指定个数的字符,例如:Mid('abcdef',2,3) = 'bcd'

InStr

返回一个字符串在另一个字符串中首次出现的位置,例如:Instr('abcd','bc') = 2

LCase

将字符串转换为小写。

UCase

将字符串转换为大写。

Left

返回字符串从左边开始指定个数的字符,例如:Left('abcd',2) = 'ab'

Right
返回字符串从右边开始指定个数的字符。

流程函数

Choose

根据一个整数表达式的结算结果,来决定返回那个位置的值

语法:

Choose(expr, value1, value2, value3...)

expr: 整数表达式,如果结果是1,则返回value1,如果结果是2,则返回value2,依次类推。

例如:choose(2,'a','b') = 'b'

Switch

按顺序计算一系列的表达式,如果某一表达式成立,则返回其随后的值。

语法:

Switch(expr1, value1, expr2, value2, expr3, value3...)

expr1、expre2、expr3:表示要计算的表达式,expr1成立的话,返回值value1,expr2成立的话,返回值value2,依次类推。

IIF

根据一个逻辑表达式的计算结果,返回两个候选值之一。

语法:

IIf(expr, truepart, falsepart)

expr: 逻辑表达式
truepart:逻辑表达式成立时返回的值
falsepart: 逻辑表达式不成立时返回的值

例如:

SELECT 客户, 产品, 日期, 数量, 数量 * 单价 * (1 - IIF(折扣 IS NULL, 0, 折扣)) As 金额 FROM {订单}

这样,即使某一行没有输入折扣,也能正常计算出金额。


本页地址:http://www.foxtable.com/webhelp/topics/0692.htm