ABS() 求绝对值
select ABS(-3)
CEILING() 舍入到最大整数
3.33 舍入到
-3.33 舍入到-3
select CEILING(-3.33)
FLOOR() 舍入到最小整数
3.33 -> 3
-3.33 -> -4
select FLOOR(-3.33)
ROUND() 四舍五入 两个参数,第一个是对象,第二个是精度
3.33 -> 3
3.66 -> 4
select ROUND(3.66,0); ->4
select ROUND(3.1415926,3); ->3.142
LEN() 计算字符串长度
select LEN('HELLO');
select FName,LEN(FName) from T_Employ;
注意: 字符串NULL(不知道)的长度也为不知道(NULL)
LOWER()转小写
UPPER() 转大写
空格处理函数
LTRIM() 去掉左空格
RTRIM() 去掉右空格
LTRIM(RTRIM()); 两边空格都去掉
select LTRIM(' bb '),RTRIM(' bb ');
select LTRIM(RTRIM(' bb ')),LEN(LTRIM(RTRIM(' bb ')))
字符串截断函数
SUBSTRING(EXPRESS,STRAT,LENTH)
显示FName中从第二个开始长度为的子字符串。
select FName,SUBSTRING(FName,2,2) from T_Employ;
日期函数
GETDATE() 取得当前日期
DATEADD(datepart,number,date) 计算增加以后的日期
date为待计算的日期,number为增量。
datepart的取法:
year yy yyyy 年份
quarter qq q 季度
month mm m 月份
dayofyear dy,y 年度第几天
day dd d 日
week wk ww 当年第几周
hour hh 小时
minute mi n 分
second ss s 秒
millonsecond ms 毫秒
select DATEADD(month,-8,'121212'); //减个月
select DATEADD(DAY,-3,GETDATE());// 减天
select DATEADD(HH,1,GETDATE());//加小时
DATEDIFF(datepart,start,end) 计算两个日期的差额(end - start)
select DATEDIFF(HH,GETDATE(),DATEADD(HH,1,GETDATE())) 计算多少个小时
要求算出员工入职年数
select FName,FInDate,DATEDIFF(YEAR,FInDate,GETDATE()) as '入职年数' from T_Employ; 计算多少年
按年限分组并统计每组人数
select COUNT(*) as '统计人数' ,DATEDIFF(YEAR,FInDate,GETDATE())as '入职年数'
from T_Employ group by DATEDIFF(YEAR,FInDate,GETDATE());
DATEPART(datepart,date) 返回一个日期的特定部分
select DATEPART(SS,getdate());
根据入职年份进行分组
select COUNT(*),DATEPART(YEAR,FInDate)
from T_Employ
group by DATEPART(YEAR,FInDate);
类型转换函数
cast(expression as date_type)
convert(date_type,expression)
select CAST('123' as int),CAST('2008-08-08' as datetime),
CONVERT(datetime,'2009-09-09'),CONVERT(varchar(50),123);
RIGHT(expression,n) 取得表达式的后n位
select RIGHT(FIdCardNumber,3) from T_TempEmployee; //取得后三位 (得到的是字符串)
select CAST(RIGHT(FIdCardNumber,3) as INTEGER) from T_TempEmployee //取得后三位并转换为整数形式
select CAST(RIGHT(FIdCardNumber,3) as INTEGER)+1 from T_TempEmployee
select convert(INT,RIGHT(FIdCardNumber,3))/2 from T_TempEmployee;
select DATEPART(YEAR,CAST('2013-04-19' as datetime));
空值处理函数
ISNULL(expression1,expression2) 如果expression1非NULL则返回expression1,
select ISNULL(FName,'佚名') from T_Employ;
case函数用法
case i
when 1 then 'aaa' // aaa 是函数的返回值
when 2 then 'bbb' //bbb
else 'ccc'
end
create table T_Customer(FName varchar(20),FLevel int);
insert into T_Customer(FName,FLevel) values('tom',1),('jerry',2),('lucy',3);
select FName from T_Customer;
select FName ,
(
case FLevel
when 1 then '普通客户'
when 2 then '会员'
when 3 then 'VIP会员'
else '未知客户类型'
end
) as '客户类型'
from T_Customer;
范围值的判断 这时case后为空
select FName,
(
case
when FSalary<2000 then '低收入'
when FSalary>=2000 and FSalary<=5000 then '中收入'
else '高收入'
end
)as 收入水平
from T_Employ;