SQL SERVER2005常用函数
一、字符串函数
a)
Charindex函数,用于返回一个字符串在另一个字符串中第一次出现的位置
i.
Select charindex(‘bj’,’I love bj’),此函数返回的结果是8
b)
Upper函数,用于将小写字符转换成大写
i.
Select upper(‘abcde’),此函数返回的结果是ABCDE
c)
Ltrim函数,用于除去字符串左边的空格
i.
Select ltrim(‘ I love bj’),此函数返回的结果是I love bj
d)
Rtrim函数,用于除去字符串右边的空格
i.
Select rtrim(‘ I love bj ’),此函数返回结果是 I love bj
e)
Replace函数,用于将字符串中的一个字符替换成另一个字符
i.
Select replace(‘abcdedd’,’d’,’f’),此函数返回的结果是abcfeff
二、日期函数
a)
Getdate()函数,用于返回当前系统时间
b)
Dateadd()函数,用于在日期的某部分上加上一定的值
i.
Select dateadd(mm,3,’02-09-2009’),此函数返回的结果是05-09-2009
c)
Datepart(),用于返回指定日期某部分的整数值
i.
Select datepart(year,’02-09-2009’),此函数返回的结果2009
d)
Datename(),用于返回日期所处的名称
i.
Select datename(dw,’02-09-2009’),此函数会返回这一个日期对应的是星期几
e)
Datediff(),用于比较日期指定部分的差异
Select datediff(dd,’02-09-2009’,’02-21-2009’),此函数会返回这两个日期间的差值12
三、数学函数
a)
Abs()函数,返回该数值的绝对值,ABS(-89)的结果为89
b)
Power()函数,用于计算数值的幂运算,POWER(5,2)结果为25
c)
Round()函数,用于对数值进行四舍五入的运算,ROUND(3.14234,2)返回3.14,括号后面的2用于表示数值的精度
d)
Ceiling()函数,用于返回一个大于或等于现有数值的最小整数
i.
Ceiling(34.5),返回的结果是35
ii.
Ceiling(34.0),返回的结果是34
e)
Floor()函数,用于返回一个小于或等于现有数值的最大整数
i.
Floor(34.5),返回的结果是34
ii.
Floor(34.0),返回的结果是34
四、聚合函数
a)
Sum( ),用于求和
b)
Avg(),用于求平均值
c)
Max(),用于计算数值的最大值
d)
Min(),用于计算数值的最小值
e)
Count(),用于计数统计
注意:用聚合函数在查询数据表中的某一列时,如果不仅要查询这一列的内容,则需要用GROUP BY子句来配合使用,例如:
Select sum(charge),name from accountbill where name=’wjc’ group by name
五、系统函数
a)
Convert( )用于数据类型转换
i.
Convert(varchar(12),1234),返回结果是字符串型数据‘1234’
b)
Cast( )用于数据类型转换,很少平台支持此函数
i.
Cast(12 as varchar(3)),返回的是字符串‘12’
SQL SERVER2005函数应用实例
一、select ‘用户’+phonenumber+’市话费用’+cast(charge as varchar(20))+’元’ as 市话费用 from accountbill where ispaid=0 and calltype=0
作用:从accountbill表中用户市话(calltype=0)的欠费(ispaid=0)费用,其中用到了CAST函数,charge列的值本是货币的数据,为了实现和字符串相连,将其转换成字符串的数据
二、select ‘用户’+phonenumber+’通话时长’+cast(ceiling(datediff(ss,starttime,endtime)\60) as varchar(20))+’分钟’ from “history-call” where phonenumber=’13391819904’
作用:查询手机号吗是13391819904的用户通话时长,不足一分钟的按一分钟计算;其中用到DATEDIFF函数来计算出用户的通话时长,用CEILING函数来实现不足一分钟按一分钟计算的要求
三、select diff(dd,cast(,cast(year(dateadd(mm,1,accounttime))as varchar(10))+cast(month(dateadd(mm,1,accounttime)) as varchar(10)) as datetime), cast(‘2009-10-31’ as datetime) as 欠费天数 from acountbill where phonenumber=’13391819904’
作用:查询手机号码为13391819904的用户拖欠还款的天数