四舍五入 

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