四舍五入  

 select ROUND(1.01,1)  结果1.00 

 计算字符串的长度 

 select LEN('Hello王') 结果6 

 计算字符串字节:中文占两个字节 

 select LENGTH('Hello王') 结果7 

 转大小写 

 LOWER(),UPPER() 

 截取字符串: 

 RIGHT(‘abc’,2) 结果bc 

 LEFT(‘abcd’,2) 结果ab 

 字符串左.右侧的空格去掉 

 LTRIM(),RTRIM() 

 截取字符串:从1开始 

 SUBSTRING(string,start_positon,length) 

 select SUBSTRING('abcdef111',2,3) 结果:bcd 

 获取当时时间: 

 select GETDATE() 

 计算增加以后的日期: 

 DATEADD(datepart,number,date) datepart为年月日,number为时间差,date为基础时间 

 select DATEADD(YEAR,3,GETDATE()) 结果:在现在时间上增加三年,如果减三年则为-3 

 select GETDATE()+3  结果:加三天 

 求时间差: 

 DATEDIFF(datepart,startdate,enddate) 

 select DATEDIFF(YEAR,GETDATE(),‘2014-08-08’) 

 获取日期的特定部分: 

 select DATEPART(YEAR,GETDATE()) 

 例子:选取一个表中汇总统计同年入职的员工个数 

 SELECT DATEPART(YEAR,FinDate),count(*)from T_Employee group by DatePart(Year,FinDate) 

 cast要转换的值as要转换的类型 

 select CAST(right(‘fadf232011-08-09’,10)as datetime) 

 替换null值的函数: 

 isnull(fname,‘未名’) 

 select isnull(fname,'未名')from T_Employee 

 case函数: 

 select fage,case fage 

             when 29 then '高龄' 

             when 27 then'正当壮年' 

             else '乳臭未干' 

         end 

 from t_employee 

 或者  限制字段范围 

 select fage,case 

             when fage>=29 then'高龄' 

             when fage<27 then'小孩' 

             else '乳臭未干' 

          end 

 from t_employee 

 联合查询 

 select* from book b,Category c 

 where b.b_cid=c.c_id 

 内连接 inner join 

 select c.c_name,b.* from book b inner join category c 

 on b.b_cid=c.c_id 

 select *from category c right join book b 

 on b.b_cid=c.c_id 

 左外连接(左链接)以保证左表数据全部显示为核心目标 

 select *from category c left outer join book b 

 on b.b_cid=c.c_id 

 右外连接(右链接)以保证右表数据全部显示为核心目标 

 select *from category c right outer join book b 

 on b.b_cid=c.c_id 

 全连接,保证左右两个表的数据全部显示出来 

 select* from category c full join book b 

 on b.b_cid=c.c_id