適用版本:SQL Server 2012。
TRY_PARSE() 轉換函數
將會傳回運算式的結果,並轉譯為所要求的資料類型;若轉換失敗,則傳回 Null。
語法:
TRY_PARSE ( string_value AS data_type [ USING culture ] )
建議先閱讀以下的文章:
T-SQL:認識 PARSE 轉換函數
http://sharedderrick.blogspot.tw/2012/06/t-sql-parse.html
請參考以下的範例程式碼:
EX1:認識 PARSE() 與 TRY_PARSE() 轉換函數
-- PARSE() 轉換函數:
-- 繁體中文,日期的順序是:ymd
-- 英文 us_english,日期的順序是:mdy
SELECT PARSE('01/02/03' AS datetime2 USING 'zh-TW') N'日期(zh-TW)'
GO
SELECT PARSE('01/02/03' AS datetime2 USING 'en-US') N'日期(en-US)'
GO
-- TRY_PARSE() 轉換函數:
-- 繁體中文,日期的順序是:ymd
-- 英文 us_english,日期的順序是:mdy
SELECT TRY_PARSE('01/02/03' AS datetime2 USING 'zh-TW') N'日期(zh-TW)'
GO
SELECT TRY_PARSE('01/02/03' AS datetime2 USING 'en-US') N'日期(en-US)'
GO
-- 01_認識 PARSE() 與 TRY_PARSE() 轉換函數
EX2:刻意輸入不符合的資料,遭遇到錯誤
-- PARSE() 轉換函數:輸入台幣,但卻是用 en-US 來剖析
SELECT PARSE('NT$123,45' AS money USING 'en-US') N'金額(美金)'
GO
/*
錯誤訊息:
訊息 9819,層級 16,狀態 1,行 1
使用 'en-US' 文化特性將字串值 'NT$123,45' 轉換成資料類型 money 時發生錯誤。
*/
-- PARSE() 轉換函數:不存在的 culture 值
SELECT PARSE('NT$123,45' AS money USING 'en-DE') N'金額(美金)'
GO
/*
錯誤訊息:
訊息 9818,層級 16,狀態 1,行 1
函數呼叫中所提供的文化特性參數 'en-DE' 不受支援。
*/
-- 02_PARSE() 轉換函數:輸入台幣,但卻是用 en-US 來剖析
-- 03_PARSE() 轉換函數:不存在的 culture 值
-- TRY_PARSE() 轉換函數:輸入台幣,但卻是用 en-US 來剖析
SELECT TRY_PARSE('NT$123,45' AS money USING 'en-US') N'金額(美金)'
GO
/*
回傳:NULL
*/
-- 04_TRY_PARSE() 轉換函數:輸入台幣,但卻是用 en-US 來剖析
-- TRY_PARSE() 轉換函數:不存在的 culture 值
SELECT TRY_PARSE('NT$123,45' AS money USING 'en-DE') N'金額(美金)'
GO
/*
錯誤訊息:
訊息 9818,層級 16,狀態 1,行 1
函數呼叫中所提供的文化特性參數 'en-DE' 不受支援。
*/
-- 05_TRY_PARSE() 轉換函數:不存在的 culture 值
EX3:TRY_PARSE() 轉換函數:判斷輸入的字串,是否可以轉換為資料類型
-- TRY_PARSE() 轉換函數:去除貨幣符號,轉為台幣
SELECT TRY_PARSE('NT$123,45' AS money USING 'zh-TW') N'金額(台幣)'
GO
-- TRY_PARSE() 轉換函數:輸入字串:NT$123,45,判斷輸入的字串,是否可以轉換為指定的台幣貨幣
DECLARE @cs1 varchar(100)='NT$123,45', @cmoney money
SET @cmoney=TRY_PARSE(@cs1 AS money USING 'zh-TW')
IF @cmoney IS NOT NULL
SELECT @cmoney N'轉換結果_金額(台幣)'
ELSE
SELECT N'轉換失敗' N'轉換結果'
GO
-- 06_TRY_PARSE() 轉換函數:輸入字串:NT$123,45,判斷輸入的字串,是否可以轉換為指定的台幣貨幣
-- TRY_PARSE() 轉換函數:輸入字串:NT$123,45,嘗試轉換為歐元貨幣
SELECT TRY_PARSE('NT$123,45' AS money USING 'de-DE') N'金額(歐元)'
GO
/*
回傳:NULL
*/
-- TRY_PARSE() 轉換函數:輸入字串:NT$123,45,判斷是否可以轉換為歐元貨幣
DECLARE @cs1 varchar(100)='NT$123,45', @cmoney money
SET @cmoney=TRY_PARSE(@cs1 AS money USING 'de-DE')
IF @cmoney IS NOT NULL
SELECT @cmoney N'轉換結果金額(歐元)'
ELSE
SELECT N'轉換失敗' N'轉換結果'
GO
-- 07_TRY_PARSE() 轉換函數:輸入字串:NT$123,45,判斷是否可以轉換為歐元貨幣
-- TRY_PARSE() 轉換函數,搭配使用 CASE 運算式 -- 輸入字串:NT$123,45,判斷是否可以轉換為歐元貨幣 DECLARE @cs1 varchar(100)='NT$123,45', @cmoney money SET @cmoney=TRY_PARSE(@cs1 AS money USING 'de-DE') SELECT CASE WHEN @cmoney IS NOT NULL THEN @cmoney ELSE 0 END N'轉換結果' GO
-- 08_TRY_PARSE() 轉換函數,搭配使用 CASE 運算式
參考資料
T-SQL:認識 PARSE 轉換函數
http://sharedderrick.blogspot.tw/2012/06/t-sql-parse.html
TRY_PARSE (Transact-SQL)
http://msdn.microsoft.com/zh-tw/library/hh213126
TRY_CONVERT (Transact-SQL)
http://msdn.microsoft.com/zh-tw/library/hh230993
轉換函數 (Transact-SQL)
http://msdn.microsoft.com/zh-tw/library/hh231076
CASE (Transact-SQL)
http://msdn.microsoft.com/zh-tw/library/ms181765.aspx
+%E8%88%87+TRY_PARSE()+%E8%BD%89%E6%8F%9B%E5%87%BD%E6%95%B8.png)
+%E8%BD%89%E6%8F%9B%E5%87%BD%E6%95%B8%EF%BC%9A%E8%BC%B8%E5%85%A5%E5%8F%B0%E5%B9%A3%EF%BC%8C%E4%BD%86%E5%8D%BB%E6%98%AF%E7%94%A8+en-US+%E4%BE%86%E5%89%96%E6%9E%90.png)
+%E8%BD%89%E6%8F%9B%E5%87%BD%E6%95%B8%EF%BC%9A%E4%B8%8D%E5%AD%98%E5%9C%A8%E7%9A%84+culture+%E5%80%BC.png)
+%E8%BD%89%E6%8F%9B%E5%87%BD%E6%95%B8%EF%BC%9A%E8%BC%B8%E5%85%A5%E5%8F%B0%E5%B9%A3%EF%BC%8C%E4%BD%86%E5%8D%BB%E6%98%AF%E7%94%A8+en-US+%E4%BE%86%E5%89%96%E6%9E%90.png)
+%E8%BD%89%E6%8F%9B%E5%87%BD%E6%95%B8%EF%BC%9A%E4%B8%8D%E5%AD%98%E5%9C%A8%E7%9A%84+culture+%E5%80%BC.png)
+%E8%BD%89%E6%8F%9B%E5%87%BD%E6%95%B8%EF%BC%9A%E8%BC%B8%E5%85%A5%E5%AD%97%E4%B8%B2%EF%BC%9ANT$123,45%EF%BC%8C%E5%88%A4%E6%96%B7%E8%BC%B8%E5%85%A5%E7%9A%84%E5%AD%97%E4%B8%B2%EF%BC%8C%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E8%BD%89%E6%8F%9B%E7%82%BA%E6%8C%87%E5%AE%9A%E7%9A%84%E5%8F%B0%E5%B9%A3%E8%B2%A8%E5%B9%A3.png)
+%E8%BD%89%E6%8F%9B%E5%87%BD%E6%95%B8%EF%BC%9A%E8%BC%B8%E5%85%A5%E5%AD%97%E4%B8%B2%EF%BC%9ANT$123,45%EF%BC%8C%E5%88%A4%E6%96%B7%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E8%BD%89%E6%8F%9B%E7%82%BA%E6%AD%90%E5%85%83%E8%B2%A8%E5%B9%A3.png)
+%E8%BD%89%E6%8F%9B%E5%87%BD%E6%95%B8%EF%BC%8C%E6%90%AD%E9%85%8D%E4%BD%BF%E7%94%A8+CASE+%E9%81%8B%E7%AE%97%E5%BC%8F.png)
+%E8%88%87+CONVERT()+%E8%BD%89%E6%8F%9B%E5%87%BD%E6%95%B8.png)
+%E5%87%BD%E6%95%B8%EF%BC%8C%E8%BD%89%E6%8F%9B%E4%B8%8D%E5%AD%98%E5%9C%A8%E6%97%A5%E6%9C%9F%EF%BC%9A2012%E5%B9%B402%E6%9C%8831%E6%97%A5.png)
+%E5%87%BD%E6%95%B8%EF%BC%8C%E8%BD%89%E6%8F%9B%E4%B8%8D%E5%AD%98%E5%9C%A8%E6%97%A5%E6%9C%9F%EF%BC%9A2012%E5%B9%B402%E6%9C%8831%E6%97%A5.png)


+%E8%BD%89%E6%8F%9B%E5%87%BD%E6%95%B8%EF%BC%8C%E6%90%AD%E9%85%8D%E4%BD%BF%E7%94%A8+CASE+%E9%81%8B%E7%AE%97%E5%BC%8F.png)
+%E8%BD%89%E6%8F%9B%E5%87%BD%E6%95%B8%EF%BC%9A%E8%BD%89%E6%8F%9B%E7%82%BA%E6%95%B4%E6%95%B8.png)
+%E8%BD%89%E6%8F%9B%E5%87%BD%E6%95%B8%EF%BC%9A%E8%BD%89%E6%8F%9B%E7%82%BA%E6%95%B4%E6%95%B8%EF%BC%8C%E6%90%AD%E9%85%8D+ISNULL()+%E5%87%BD%E6%95%B8.png)
+%E8%BD%89%E6%8F%9B%E5%87%BD%E6%95%B8%EF%BC%8C%E8%BD%89%E6%8F%9B%E7%82%BA+datetime2+%E8%B3%87%E6%96%99%E9%A1%9E%E5%9E%8B.png)
+%E8%BD%89%E6%8F%9B%E5%87%BD%E6%95%B8%EF%BC%8C%E4%BD%BF%E7%94%A8%E8%B2%A8%E5%B9%A3%E7%AC%A6%E8%99%9F%E9%80%B2%E8%A1%8C%E5%89%96%E6%9E%90.png)




+%E5%87%BD%E6%95%B8%E4%BE%86%E9%80%A3%E6%8E%A5%E8%B3%87%E6%96%99.png)
+%E5%8E%BB%E4%B8%B2%E9%80%A3%E6%9C%89+NULL+%E5%80%BC%E7%9A%84%E8%B3%87%E6%96%99%E8%A1%8C.png)
+%E5%87%BD%E6%95%B8%EF%BC%8C%E9%80%A3%E6%8E%A5%E5%A4%9A%E5%80%8B%E8%B3%87%E6%96%99%E8%A1%8C%E7%9A%84%E8%B3%87%E6%96%99.png)
+%E5%87%BD%E6%95%B8.png)






+%E5%87%BD%E6%95%B8%EF%BC%9A%E4%BE%9D%E6%93%9A%E6%97%A5%E6%9C%9F%E6%8E%92%E5%BA%8F%EF%BC%8C%E4%BD%86%E5%83%85%E6%9F%A5%E8%A9%A2%E7%AC%AC+11+%E5%88%B0+20+%E7%AD%86%E7%9A%84%E8%B3%87%E6%96%99%E5%88%97.png)





+%E5%87%BD%E6%95%B8%E3%80%81COALESCE()+%E5%87%BD%E6%95%B8.png)
+%E5%87%BD%E6%95%B8%EF%BC%8C%E5%83%85%E6%94%AF%E6%8F%B4%E5%85%A9%E5%80%8B%E5%8F%83%E6%95%B8.png)
+%E5%87%BD%E6%95%B8%EF%BC%8C%E5%8D%BB%E8%BC%B8%E5%85%A5%E4%B8%89%E5%80%8B%E5%8F%83%E6%95%B8.png)
+%E5%87%BD%E6%95%B8.png)
+%E5%87%BD%E6%95%B8%EF%BC%8C%E5%85%A8%E9%83%A8%E7%9A%84%E5%8F%83%E6%95%B8%E9%83%BD%E6%98%AF+NULL.png)
+%E5%87%BD%E6%95%B8%EF%BC%8C%E4%BD%BF%E7%94%A8%E5%A4%9A%E5%80%8B%E5%8F%83%E6%95%B8.png)
+%E5%87%BD%E6%95%B8%EF%BC%8C%E5%8F%AF%E8%83%BD%E6%9C%83%E6%9C%89%E8%B3%87%E6%96%99%E8%A2%AB%E6%88%AA%E6%96%B7%E7%9A%84%E5%95%8F%E9%A1%8C.png)

+%E5%87%BD%E6%95%B8%EF%BC%8C%E6%89%BE%E5%87%BA%E5%AE%A2%E6%88%B6%E7%AC%AC%E4%B8%80%E6%AC%A1%E6%9C%89%E4%B8%8B%E5%96%AE%E6%9C%88%E4%BB%BD%E7%9A%84%E9%87%91%E9%A1%8D.png)




