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連接,准備好好學習一下。

 

希望各位大牛給出指導,不當之處虛心接受學習!謝謝!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM