簡介
SQL Server2012新增了一些内置函數來讓開發人員使用起來更加容易。可以減少代碼量,下面我們将SQL Server新增的函數分為幾類分别探讨一下。
字元串類函數
SQL Server2012中提供了兩個和字元串相關的函數,分别為Concat和Format.
Concat如其名稱所示,用于連接配接兩個字元串.但比過去的增強是可以免去類型轉換的煩惱而直接将多個值連接配接為一個String值進行傳回,如圖1所示.
1
圖1.Concat示例
Concat的MSDN連結為:http://msdn.microsoft.com/en-us/library/hh231515(v=SQL.110).aspx
而Format是将指定字元串按照格式和地區進行格式化。如圖2所示。
2
圖2.Format執行個體
這個具體的本地化特性可以參考National Language Support (NLS) API Reference
Format的MSDN連結:http://msdn.microsoft.com/en-us/library/hh213505(v=sql.110).aspx
邏輯類函數
SQL Server2012新增了兩個邏輯類函數,分别為CHOOSE和IIF。這兩個函數都可以看作是CASE…WHEN的翻版函數。
先從CHOOSE來看,CHOOSE按照索引号傳回清單中的資料,如圖3所示。
3
圖3.Choose示例
CHOOSE在MSDN中的連結為:http://msdn.microsoft.com/en-us/library/hh213019(v=sql.110).aspx
與Choose等效的CASE表達式如圖4表示。
4
圖4.CHOOSE和CASE表達式
而IIF函數就是類C語言中”XX===XX?結果1:結果2”這樣的按照布爾運算結果傳回對應内容的T-SQL版本,應用起來非常簡單,如圖5所示。
5
圖5.IIF表達式
IIF在MSDN的連結為:http://msdn.microsoft.com/en-us/library/hh213574(v=SQL.110).aspx
日期類函數
SQL Server2012新增了一些時間和日期格式,都是一些小文法糖的感覺。下面分别為新增的函數和對應的MSDN位址。由于這些函數比較雷同,是以簡單的挑一個說:
DATEFROMPARTS(http://msdn.microsoft.com/en-us/library/hh213228(v=SQL.110).aspx)
DATETIMEFROMPARTS(http://msdn.microsoft.com/en-us/library/hh213233(v=SQL.110).aspx)
DATETIME2FROMPARTS (http://msdn.microsoft.com/en-us/library/hh213312(v=SQL.110).aspx)
DATETIMEOFFSETFROMPARTS(http://msdn.microsoft.com/en-us/library/hh231077(v=SQL.110).aspx)
TIMEFROMPARTS(http://msdn.microsoft.com/en-us/library/hh213398(v=SQL.110).aspx)
DATEFROMPARTS函數是根據給定的年月日給出Date類型的日期,如圖6所示。
6
圖6.DATEFROMPARTS示例
下面這個函數EOMONTH要重點突出一下,這個函數的确是可以省點力。這個函數可以根據指定日期取得日期當月的最後一天,以前我們要做到這點都是通過dateadd和day函數去運算下,現在可以免去這個煩惱了,EOMONTH使用示例如圖7所示。
7
圖7.EOMONTH函數示例
EOMONTH在MSDN的連結 :http://msdn.microsoft.com/en-us/library/hh213020(v=SQL.110).aspx
轉換類函數
SQL Server2012新增了3個轉換類函數PARSE和TRY_PARSE以及TRY_CONVERT
Parse和Cast的用法非常相似,唯一的不同是Parse可以多指定一個本地化參數,使得按照本地化語言可以被轉換,圖8比較了使用Parse和Cast的不同。
8
圖8.Parse和Cast
而TRY_CONVERT非常類似于Convert,但TRY_CONVERT可以探測被轉換類型是否可能,比如字元串有可能轉為INT類型,但INT類型無論取值是多少時,永遠不可能轉換為XML類型。當TRY_CONVERT轉換的資料類型有可能成功時,如果成功,傳回轉換類型,如果失敗傳回NULL,但如果所轉換的資料類型永遠不可能成功時,報錯,如圖9所示。
9
圖9.TRY_CONVERT示例
而TRY_PARSE非常類似于PARSE,僅僅是轉換不成功時不抛出異常,而是傳回NULL,如圖10所示.
10
總結
本文簡單講述了SQL SERVER2012新增的内置函數,個人感覺上來看,基本上所有的函數都是文法糖性質的。不過用好了文法糖也會讓代碼更加整潔和具有可讀性。
本文轉自CareySon部落格園部落格,原文連結:http://www.cnblogs.com/CareySon/archive/2012/03/12/2392084.html,如需轉載請自行聯系原作者