SQL Server

本章介绍的是使用SQL Server的时候,SQL语句支持的常用函数。

日期函数

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

返回指定日期的天。

DatePart

返回给定日期的指定部分。

语法

DatePart(Interval, date)

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

Interval 包含以下设置:

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

例如统计每年的订单数:

SELECT DatePart(yyyy, 订购日期) AS 年, Count(*) AS 订单数 FROM {订单} GROUP BY DatePart(yyyy, 订购日期)

GetDate

返回系统日期,含时间。

例如加载今年的订单:

Select * From {订单} Where Year(订购日期) = Year(GetDate())

DateDiff

计算两个日期的间隔。

语法

DateDiff(Interval, Date1, Date2)

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

Date1:起始日期

Date2:结束日期

Interval 包含以下设置:

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

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

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

DateAdd

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

语法

DateAdd(Interval, Number, Date)

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

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

Date: 日期值

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

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

字符函数

Len

返回字符串的长度

Lower

将字符串转换为小写。

Upper

将字符串转换为大写。

SubString

返回从指定位置开始指定长度的字符串,例如:SubString('abcdefg', 2, 3) = 'bcd'

CharIndex

返回给定子字符串首次出现的位置,例如:CharIndex('b','abcdefg') = 2

Left

取左侧指定长度的字符串。

Right

取右侧指定长度的字符串。

Replace

将指定的子字符串替换为其它的字符串,例如:Replace('abcdefg','bc','45') = 'a45defg'

数学函数

Abs

返回给定数值的绝对值。

Ceiling

返回大于或等于给定数值的最小整数。

Floor

返回小于或等于给定数值的最大整数。

Round

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

例如:

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

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

空值处理函数

ISNULL

判定一个表达式的值是否为空,如果不为空,则返回表达式的值,否则返回一个替代值。

语法

ISNULL(expression, value)

expression一个表达式,如果此表达式的值不为空,则返回此值。
value
     一个替代值,如果表达式的值为空,则返回此替代值。 

例如:

Select 日期, 产品, 数量, 数量, 单价, ISNULL(折扣,0) As 折扣 From {订单}

上述的语句中,如果已经输入折扣,则正常显示折扣,否则折扣列显示的是0。
再次提示:0和空值是两回事,空值表示没有输入数据,而0意味着用户已经输入了一个为0的值。

COALESCE

COALESC函数可以指定任意多个参数,并返回这些参数中第一个不为空的值,如果全部为空,则返回空值。
COALESCE函数相当于ISNULL函数的增强版。

条件语句

Case When

Case When语句用于进行条件判断。 

语法1

Case 表达式
When 比较值1 Then 返回值1
When 比较值2 Then 返回值2
When 比较值3 Then 返回值3
....
Else 默认返回值
End

当表达式等于比较值1时,则得到返回值1,当表达式等于比较值2时,则得到返回值2,其余类推;当比较结束,没有符合的比较值时,则得到默认返回值。

例如

Select CName As 客户名称,
(Case CLevel
When 1 Then 'VIP客户'
When 2 Then '高级客户' 
When 3 Then '普通客户'
Else '错误等级'
End) As 客户等级 From {客户}

语法2

Case
When 表达式1 Then 返回值1
When 表达式2 Then 返回值2
When 表达式3 Then 返回值3
...
Else 默认返回值
End

当表达式1成立时,则得到返回值1,当表达式2成立时,则得到返回值2,其余类推;没有表达式成立时,则得到默认返回值。

例如:

Select 姓名,
(Case
When 体重 < 40 Then '偏瘦'
When 体重 > 50 Then '偏胖'  
Else '适中'
End) As 体型 From {学生}


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