abs() 求绝对值
ceiling() 舍入到最大整数.3.33将被舍入为 4;2.89将被舍入为3;-3.61将被舍入为-3 Ceiling-天花板意思
floor() 舍入到最小整数. 3.33将被舍入为3;2.89将被舍入为2;-3.61将被舍入为-4 floor-地板
round() 四舍五入. 舍入到"离我半径最近的数". round-"半径". round(3.1425, 2)
字符串函数
len() 计算字符串长度
lower()、upper():转小写、大写
ltrim() 字符串左侧的空格去掉
rtrim() 字符串右侧的空格去掉
ltrim(rtrim(' bb ')) 先左后右 去掉两边的空格
substring(string,start_position,length)
参数string 为主字符串,start_position 为子字符串在主字符串中的起始位置,length为子字符串的最大长度
select substring('abcdef111',2,3)
日期函数
getdate() 取得当前日期时间
dateadd(datepart,number,date) 计算增加以后的日期.参数date为待计算的日期; 参数number为增量;参数datepart 为计量单位,可选值见备注. dateadd(day,3,date)为计算日期date的3天后的日期,
而dateadd(month,-8,date) 为计算日期date的8个月之前的日期
datediff (datepart,startdate,enddate) 计算两个日期之间的差额. datepart为计量单位,
可取值参考 dateadd
select datediff(year,FinDate,getdate()),count(*) from T_Employee
group by DateDiff(year,FinDate,getdate())
以上代码是 统计不同工龄的员工的个数。
adtepart(datepart,date) 返回一个日期的特定部分
求每年入职的员工个数
select DatePart(year,FinDate),conut(*) from T_Employee
group by DatePart(year,FInDate)
类型函数转换
cast (expression as data_type) (表达式 as 数据类型)
convert (data_type,expression) (数据类型 as 表达式)
select FldNumber
right(FldNumber,3) as 后三位
cast(right(FldNumber,3) as integer) as 后三位的整数形式
cast(right(FldNumber,3) as integer)+1 as 后三位加1
convert(integer,right(FldNumber,3))/2 as 后三位除以2
from T_Person
把一个字符串转换成一个date类型
cast 语法
select cast('123' as int) ,cast('2008-08-08' as datetime)
convert 语法
convert(datetime,'2009-09-09'),convert(varchar(50),123)
空值处理函数
isnull (expression,value) 如果expression 不为空则返回expression,否则返回value
select isnull (FName,'佚名') as 姓名 from T_Employee
case 单值判断,相当于 switch case
语法:
case expression
whern value1 then returnvalue1
whern value2 then returnvalue2
whern value3 then returnvalue3
else defaultreturnvalue
end
例子:
select FNae
(
case FLeve1
when 1 then '普通客户'
when 2 then '会员'
when 3 then 'VIP'
else '未知客户类型'
end
) as 客户类型
from T_Customer
select FName,
(
when FSalary<2000 then '低收入'
when FSalary>=2000 and FSalary<=5000 then '中等收入'
else '高收入'
end
) as 收入水平
from T_Employee
|
|