[鐵人賽][Denali 新特性探險4]Conversion functions

[鐵人賽][Denali 新特性探險4]Conversion functions

以前的版本沒有提供相關驗證轉換的函數,所以當轉換失敗時就會直接拋出錯誤訊息(如下圖)。

image

但這樣的處理方法相當不好,如果開發人員能事先知道轉換結果的話,

那開發過程中的Error Handling 可說變得較簡單且更好處理,

(就像.NET Framework也有提供相關類型轉換驗證的方法,

可參考[C#][Tips]比較Int32.TryParseInt32.Parse And Convert.ToInt32),

當然使用Denali一定可以享受到VIP待遇,所以這種瑣碎又煩人的事情就交給Try_Parse function 吧。

 

TRY_PARSE:轉換字串為自訂類型,如果失敗將回傳null。

select try_parse('100元¡M' as int) as 'tryparseInt',
try_parse('200*10*10' as date) as 'tryparseDate',
try_parse('987.654' as decimal(10,2)) as 'tryparseDecimal',
try_parse('2011-10-10' as datetime(7) using 'en-us') as 'tryparseDatetime(7)'

image

 

基本應用

select 
iif(try_parse('100' as money using 'zh-Tw') is not null,'新台幣100元','轉換失敗') as 'Result'

image

 

PARSE :轉換字串為自訂類型,如果失敗不回傳null。

select parse('17' as tinyint) as 'Result1',
parse('2011-10-10' as date) as 'Result2',
parse('$99.99' as money using 'en-us') as 'Result3'

 

image

 

TRY_CONVERT: 轉換資料為自訂類型,如果失敗將回傳null。

select try_convert(tinyint,'124.10') as 'tinyint',
try_convert(decimal(17,9),'12453.4511111111111111') as 'decimal(17,9)',
try_convert(varchar(10),'2011/10/10',111) as 'datetime',
try_convert(date,'20111111') as 'date'

image

 

鐵人賽Denali新特性全文章