黑马程序员技术交流社区

标题: 数字函数 字符串函数 日期函数 类型转换函数 case函数 [打印本页]

作者: LiangLiu    时间: 2013-4-21 00:10
标题: 数字函数 字符串函数 日期函数 类型转换函数 case函数
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


作者: 许庭洲    时间: 2013-4-21 06:09
值得学习ing!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2