①数字函数
Abs();--求绝对值
Abs(-10);--10
Ceiling();--舍入到最大整数如3.1=4, 3.8=4 -3.1=-3 -3.6=-3
FLOOR();--舍入到最小整数如-3.1=-4
ROUND();--四舍五入
Select round(3.1415936,3)--从第四位四舍五入,其它的同理.本例返回3.1420000
②字符串函数
Len();--计算字符串长度
Len(‘123’);--3
Len(12345);--5
Len(43242kjjlklk);--语法错误
Len(‘43242kjjlklk’);--12
Lower();--转小写
UPPER();--转大写
LTRIM();--字符串左侧的空格去掉
RTRIM();--字符串右侧的空格去掉
Lltrim(RTRIM(str));--两边的空格去掉
SUBSTRING(string,start_position,length)
Substring(‘123’,1,2);--12
Select name,len(name) form t_test;--返回每个名字的len
LTRIM(RTIM(‘ fds ’));--去除两边的空格,fds
③日期函数
GETDATE();--取得当前时期时间
DATEADD(detepart,number,date);--计算机增加以后的日期。
参数说明:date为增量
Datepart为计量单位,
Year yy,yyyy 年份
Quarter qq,q 季度
Month mm,m 月份
Dayofyear dy,y 当年度的第几天
Day dd,d日
Week wk,ww当年度的第几周
Hour hh小时
Minute min,n分
Second 秒
Number为增加的数,可以为负数
Select dateadd(year,1,getdate());--2012-11-06 22:12:44.933
Select dateadd(yy,1,getdate());--同上
Select dateadd(yy,-1,getdate());--2010-11-06 22:14:32.763
Dateadd(hour,2,getdate());--当前时间加两小时
Datediff(datepart,startdate,enddate);--计算机两个日期之间的差Datediff(hh,getdate(),dateadd(yy,2,getdate()));--17544小时
Datediff(year,getdate(),dateadd(yy,2,getdate()));--2年
Select datediff(year,getdate(),indate) form t_test;--显示名字,入职年限,假如这里的indate表示员工入职时间的字段
Select datediff(year,indate,getdate()),count(*) from t_test group by datediff(year,indate,getdate();--入职时间为多少年的人数统计
Select datediff(year,e,getdate() from t_test group by datediff(year,e,getdate();--没有count(*)表示分成了哪些组,而不统计个数
Datepart(datepart,date);
--返回一个日期的一部分
Datepart(year,getdate());-当前的年份
Select datepart(year,indate),count(*) from t_test group by datepart(year,indate);--取出每一年入职员工的个数,这里假如indate为入职员工的字段
④类型转换函数
cast(expression as date-type);
convert(date-type,expression);同上,都为类型转换函数date-type为要转成的类型
convert(datetime,’2008’); --2008-01-01 00:00:00.000
convert(datetime,'2008-1-7');--2008-01-07 00:00:00.000
convert(datetime,'2008-1-7 1:43');-- 2008-01-07 01:43:00.000
select convert(varchhar(50),);-- 3435439564
select ‘123’+1;--
select convert(int,’123’)+1;--124;最好显示转换
⑤空值处理函数
Select Isnull(name,’佚名’) from t_test
;--如果name为空返回’佚名’,不为空就还是name的值
⑥Case 函数用法
语法:
Case expression
When value1 then returnvalue1
When value2 then returnvalue2
Else 缺省数据
End
--1为VIP,2为普通--假如level是表一个人客户类型的字段,值为1,2,3
Select name,(case level
When 1 then ‘vip’
When 2 then ‘普通’
Else ‘不知道’
end)
From t_test;--
--<1000:低收入, 2000<=salary<5000中等收入
Select name,(
Case
When salary<1000 then ‘低收入’
When salary>=2000 AND salary<5000 then ‘中等收入’
Else ‘高等收入’
end
)
From t_test;
--if(a>b)就查A否则查b,如果b>c就查b,否则查c--
Select
(Case
When a>b then a
When a<=b then b
End
),(
case
When b>c then b
When b<=c then c
End
)
From t_test;
--
Select(Case
When a>b then a
Else b
End
),(case
When b<c then b
Else c
End)
From t_test;
--收入,支出---
select 单号,
(case
When 金额>0 then 金额
Else 0
end
) as 收入,(case
When 金额>0 then 0
Else then 0-金额--abs(金额)--
end
) as支出
From t_test
Select name,
Sum(
(case
When N‘胜’ then 1
When N’负’ then 0
end)
),
Sum(
Case
When N’胜’ then 0
When N’负’ then 1
end
)
)
---------------------- android培训、 java培训、期待与您交流! ----------------------