黑马程序员 数据库基础 基本函数

---------------------- android培训java培训、期待与您交流! ----------------------

①数字函数

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培训、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值