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我的地盘
 
 
日期函数:
函数名                      描述                                                               举例
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
 

系统函数:           描述                                                              举例
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)

 
 
二、查询用户的市话费
计算市话时长:
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
三、查询用户的通话费用
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" />