好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

SQLServer学习笔记系列3

一.写在前面的话 今天又是双休啦!生活依然再继续,当你停下来的时候,或许会突然显得不自在。有时候,看到一种东西,你会发现原来在这个社会上,优秀的人很多,默默 吃苦努力奋斗的人也多!星期五早上按时上班,买好早餐,去公司餐厅吃早餐,我遇见了一个人

一.写在前面的话

今天又是双休啦!生活依然再继续,当你停下来的时候,或许会突然显得不自在。有时候,看到一种东西,你会发现原来在这个社会上,优秀的人很多,默默

吃苦努力奋斗的人也多!星期五早上按时上班,买好早餐,去公司餐厅吃早餐,我遇见了一个人,也许一次两次我还不会去注意,然而我每次在餐厅吃早餐,

都会遇到他,我看到他的是每一次都带着一碗白粥在那里吃,甚至连一点咸菜都没用,或许我这样的单身狗,不能理解有家室的痛楚,也许这是他的一种生活

方式,但我更多的看到的是他的一种吃苦,为了家人,为了将来的一种努力。也许是我想太多,但不管怎样,我们都该注意身体,按时吃早餐,保持营养,为

了以后我们的家人和以后的幸福,我们更应该努力并保重着自己。说了这么多,还是继续我们的sqlserver的学习吧!前面的学习系列:

SQLServer学习笔记系列1:http://www.cnblogs.com/liupeng61624/p/4354983.html

SQLServer学习笔记系列2:http://www.cnblogs.com/liupeng61624/p/4367580.html

二.case表达式

(1)简单表达式,例如,要查询雇员表里面地区(region)为WA的用[华盛顿地区]代替表示。

 1    select   firstname,lastname,
  2    case   region
  3   when  '  WA  '  then  '  华盛顿地区  ' 
 4    else   '  其他地区  ' 
 5    end
  6    from  hr.employees 

(2)搜索表达式,在这里我们先查询下雇员表(hr.employees里面的信息。

 1    select   firstname,lastname,region
  2    from  hr.employees 

假如对于region为null的地区,我们想用[未知地区]来表达,该怎么写了?此时就需要用到搜索表达式,可以这样写:

 1    select   firstname,lastname,
  2    case  when region = '  WA  '  then  '  华盛顿地区  ' 
 3        when region  is   null  then  '  未知地区  ' 
 4    else   '  其他地区  ' 
 5    end
  6    from  hr.employees 

结果如图所示:

三.日期和时间数据的处理。

(1)字符串日期

‘20080301’,这一串为字符串日期,但必须保证为四位的年份,两位的月份,两位的日期。例如,查询订单表日期大于‘20080301’。可以这样写:

 1    select  *  from   sales.orders
  2    where  orderdate> '  20080301  '  

结果如图所示:

(2)cast进行转化。例如,可以讲‘20080301’转化为时间类型。其结果跟上图一样。

 1    select  *  from   sales.orders
  2    where  orderdate>cast( '  20080301  '   as  datetime) 

(3)datepart,截取日期中的某一段,year代表截取年,month代表截取月份,day代表截取日期。等等。。。。。

例如:截取当前时间的某一部分。

 1    select  datepart(year,getdate())  as  N '  年份  '  ,
  2          datepart(month,getdate())  as  N '  月份  '  ,
  3          datepart(day,getdate())  as  N '  日  '  ,
  4          datepart(hour,getdate())  as  N '  时  '  ,
  5          datepart(minute,getdate())  as  N '  分  '  ,
  6          datepart(second,getdate())  as  N '  秒  '  

结果如图:

(4)特殊日期截取部分,例如:

 1     select  datepart(dayofyear,getdate())  as  N '  一年中的第几天  '  ,
  2          datepart(weekday,getdate())  as  N '  一星期中第几天  '  ,
  3          datepart(week,getdate())  as  N '  今年的第几周  '  

结果如图:

(5)日期的加减。dateAdd(增长单位(年、月、日),步长(增长多少),基数),datediff(单位,步长,基数)。

例如:当前日期加20天是多少?算一算我深爱的祖国建国多久?本屌丝今年多大?

 1    select  dateadd(day, 20 ,getdate())  as  N '  20天后的是什么日子  '  ,
  2          datediff(year, '  19491001  ' ,getdate())  as  N '  祖国成立这么多年啦  '  ,
  3          datediff(year, '  19911002  ' ,getdate())  as  N '  屌丝多大啦  '  

(6)cast与convert,两者都能讲字符串或者其他形式的转化为指定的类型。不同的是:convert转化时可以指定转化的样式,cast则直接转化。

例如:

 1    select  convert(nvarchar,getdate(), 112 )  as  N '  转化后的形式  '  ,
  2         left( convert(nvarchar,getdate(), 112 ), 6 )  as  N '  取出年月  '  

结果如图:

这次内容比较少,下一节准备学习我们常用的join连接,准备好好学习一下。

希望各位大牛给出指导,不当之处虚心接受学习!谢谢!

查看更多关于SQLServer学习笔记系列3的详细内容...

  阅读:41次