SQL server 2005函数应用:
如果我们在T—SQL中查询语句时,除了需要使用一些简单的增加,删除,修改与查询的语句。但是为了更方便快捷地完成大量的任务,
SQL server 2005提供了一些内部函数,可以和 select语句联合使用,也可以和Update,Insert一起使用,可以进行类型转换,日期处理,
数学计算,实现系统功能。
根据用途,函数分为四类,分别是字符串函数,日期函数,数学函数,系统函数。
字符串函数:
函数名 描述 举例
CharIndex 用来寻找一个指定的字符串在另一个字符串中的起始位置; select charindex('accp','My ACCP coures',1 返回:4
Len 返回传递给它的字符串长度; select len (SQL Server 课程) 返回结果:12
Upper 把传递给它的字符串转换为大写; select upper ('SQL server 课程')
Ltrim 清除字符右边的空格 ; select ltrim ('强蒙')返回:强蒙
rtrim 清楚字符左边的空格; select rtrim ('qiang') 返回:qiang
right 从字符串右边返回指定数目的字符; select right ('亲,爱',3 返回:爱
Replace 替换一个字符串中的字符; select replace ('数据.理财','数据','理财') 返回:数据.理财
stuff 在一个字符串中,删除指定长度的字符, select stuff('ABC',2,3,'我的地盘') 返回:A我的地盘
函数名 描述 举例
CharIndex 用来寻找一个指定的字符串在另一个字符串中的起始位置; select charindex('accp','My ACCP coures',1 返回:4
Len 返回传递给它的字符串长度; select len (SQL Server 课程) 返回结果:12
Upper 把传递给它的字符串转换为大写; select upper ('SQL server 课程')
Ltrim 清除字符右边的空格 ; select ltrim ('强蒙')返回:强蒙
rtrim 清楚字符左边的空格; select rtrim ('qiang') 返回:qiang
right 从字符串右边返回指定数目的字符; select right ('亲,爱',3 返回:爱
Replace 替换一个字符串中的字符; select replace ('数据.理财','数据','理财') 返回:数据.理财
stuff 在一个字符串中,删除指定长度的字符, select stuff('ABC',2,3,'我的地盘') 返回:A我的地盘
日期函数:
函数名 描述 举例
Getdate 取得当前的系统日期; select getdate () 返回:今天的日期
dateadd 将指定的数值添加到指定的日期部分后的日期; select dateadd(mm,5, '01/01/2010') 返回:05/01/2010
datediff 两个日期之间指定日期部分的区别 ; select datediff (mm, '01/01/2010', '02/01/2010') 返回:4
datename 日期中指定日期部分的字符串形式; select datename(dw, '03/30/2010')返回:saturday
datepart 日期中指定日期部分的整数形式; select datepart (day, '01/10/2000') 返回:10
函数名 描述 举例
Getdate 取得当前的系统日期; select getdate () 返回:今天的日期
dateadd 将指定的数值添加到指定的日期部分后的日期; select dateadd(mm,5, '01/01/2010') 返回:05/01/2010
datediff 两个日期之间指定日期部分的区别 ; select datediff (mm, '01/01/2010', '02/01/2010') 返回:4
datename 日期中指定日期部分的字符串形式; select datename(dw, '03/30/2010')返回:saturday
datepart 日期中指定日期部分的整数形式; select datepart (day, '01/10/2000') 返回:10
数学函数: 描述 举例
abs 取数值表达式的绝对值; select abs(-50) 返回:50
ceiling 取大于或指定数值,表达式的最小整数; select ceiling (43.5) 返回:44
floor 取小于或等于指定表达式的最大整数; select floor(43.5) 返回:43
power 取数值表达式的幂值; select power(5,2) 返回:25
round 将数值表达式四舍五入为指定精度; select round (43.543,1)返回:43.5
sign 对于正数返回+1,对于负数返回-1, select sign (-43) 返回:-1
sqrt 取浮点表达式的平方根; select sqrt (9) 返回:3
abs 取数值表达式的绝对值; select abs(-50) 返回:50
ceiling 取大于或指定数值,表达式的最小整数; select ceiling (43.5) 返回:44
floor 取小于或等于指定表达式的最大整数; select floor(43.5) 返回:43
power 取数值表达式的幂值; select power(5,2) 返回:25
round 将数值表达式四舍五入为指定精度; select round (43.543,1)返回:43.5
sign 对于正数返回+1,对于负数返回-1, select sign (-43) 返回:-1
sqrt 取浮点表达式的平方根; select sqrt (9) 返回:3
系统函数: 描述 举例
convert 数据类型转换 select convert(varchar(5),12345) 返回:12345
cast 数据类型转换,与convert相比语法比较简单;
current_user 返回当前用户名; select current_user 返回:你目前用户名
datalength 返回用于指定表达式的字节数; select datalength ('中国') 返回:5
host_name 返回当前的计算机名称; select host_name () 返回:计算机名称
system_user 返回当前登陆名; select system_user 返回;你当前登陆名
user_Name 从给指定的用户ID返回用户名; select user_name (1) 返回:从任意数据库中返回"dbo"
综合查询事例
一、查询用户通过记录
select starttime 开始时间,endtime 结束时间,phonenumber 电话号码,calltype 通话类型,accountbillid 账单ID
from call
where phonenumber = '13101337079' AND starttime between cast('2008-08-01 00:00:00' as datetime) and cast('2008-08-31 23:59:59' as datetime)
![](https://i-blog.csdnimg.cn/blog_migrate/39a469fdd2acd169a99326164e2f1df9.jpeg)
二、查询用户的市话费
计算市话时长:
select sum(ceiling(datediff(ss,starttime,endtime)/60.0)) "市话通话时长(分钟)"
from call
where phonenumber = '13101337079' AND starttime between cast('2008-08-01 00:00:00' as datetime) and cast('2008-08-31 23:59:59' as datetime) AND calltype = 0
![](https://i-blog.csdnimg.cn/blog_migrate/4b51dfbf333e1ea63e37672ee482120b.jpeg)
三、查询用户的通话费用
select
sum(ceiling(datediff(ss,call.starttime,call.endtime)/60.0)*tariffrate.tariffrate) "话费"
from call,tariffrate
where
call.calltype=tariffrate.calltype AND
phonenumber = '13101337079' AND starttime between cast('2008-08-01 00:00:00' as datetime) and cast('2008-08-31 23:59:59' as datetime);
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
![](https://i-blog.csdnimg.cn/blog_migrate/144268aa54ce3352844a31977206f502.jpeg)
转载于:https://blog.51cto.com/qiangmeng/289627