適用版本:SQL Server 2012。
PARSE 轉換函數
傳回轉譯成所要求之資料類型的運算式結果。
PARSE 適用於從字串轉換到日期/時間、數值、貨幣等類型。
也可以使用貨幣符號進行剖析。
一般類型轉換仍可繼續使用 CAST 或 CONVERT。
請注意,剖析字串值將對效能造成一定程度的負擔。
語法:
PARSE ( string_value AS data_type [ USING culture ] )
如未提供 culture 引數,將會使用目前工作階段的語言。
此語言是以 SET LANGUAGE 陳述式隱含或明確加以設定。
culture 可以是 .NET Framework 所支援的任何文化特性,不限於 SQL Server 明確支援的語言。
如果 culture 引數無效,PARSE 將會產生錯誤。
請參考以下的範例程式碼:
EX1:PARSE() 轉換函數,轉換為 datetime2 資料類型
-- 繁體中文,日期的順序是:ymd SELECT PARSE('01/02/03' AS datetime2 USING 'zh-TW') N'日期' GO -- 英文 us_english,日期的順序是:mdy SELECT PARSE('01/02/03' AS datetime2 USING 'en-US') N'日期' GO
-- 01_PARSE() 轉換函數,轉換為 datetime2 資料類型
EX2:PARSE() 轉換函數,使用貨幣符號進行剖析
-- 去除貨幣符號 -- 台幣 SELECT PARSE('NT$123,45' AS money USING 'zh-TW') N'金額(台幣)' GO -- 歐元 SELECT PARSE('€123,45' AS money USING 'de-DE') N'金額(歐元)' GO -- 美金 SELECT PARSE('$123,45' AS money USING 'en-US') N'金額(美金)' GO
-- 02_PARSE() 轉換函數,使用貨幣符號進行剖析
EX3:刻意輸入不符合的資料,遭遇到錯誤
-- 輸入台幣,但卻是用 en-US 來剖析 SELECT PARSE('NT$123,45' AS money USING 'en-US') N'金額(美金)' GO /* 錯誤訊息: 訊息 9819,層級 16,狀態 1,行 1 使用 'en-US' 文化特性將字串值 'NT$123,45' 轉換成資料類型 money 時發生錯誤。 */
-- 03_錯誤訊息 9819
-- 不存在的 culture 值 SELECT PARSE('NT$123,45' AS money USING 'en-DE') N'金額(美金)' GO /* 錯誤訊息: 訊息 9818,層級 16,狀態 1,行 1 函數呼叫中所提供的文化特性參數 'en-DE' 不受支援。 */
-- 04_錯誤訊息 9818
認識 PARSE 轉換函數
傳回轉譯成所要求之資料類型的運算式結果。
語法:
PARSE ( string_value AS data_type [ USING culture ] )
引數說明:
(1) string_value
nvarchar(4000) 值,代表要剖析為指定之資料類型的格式化值。
string_value 必須是所要求之資料類型的有效表示法,否則 PARSE 會引發錯誤。
(2) data_type
表示結果之資料類型的常值。
(3) culture
指出 string_value 據以格式化之文化特性的選用字串。
如未提供 culture 引數,將會使用目前工作階段的語言。
此語言是以 SET LANGUAGE 陳述式隱含或明確加以設定。
culture 可以是 .NET Framework 所支援的任何文化特性,不限於 SQL Server 明確支援的語言。
如果 culture 引數無效,PARSE 將會產生錯誤。
注意事項
以引數形式傳遞給 PARSE 的 Null 值,會以下列兩種方式處理:
(1) 如果傳遞了 NULL 常數就會引發錯誤。 Null 值無法以特定文化特定方式剖析為不同的資料類型。
(2) 如果在執行階段傳遞了 null 值的參數,將會傳回 null,以避免整個批次遭到取消。
PARSE 僅適用於從字串轉換到日期/時間及數字類型。
一般類型轉換仍可繼續使用 CAST 或 CONVERT。 請注意,剖析字串值將對效能造成一定程度的負擔。
PARSE 必須仰賴既存的 .NET Framework Common Language Runtime (CLR)。
因為必須要有 CLR 才可執行此函數,所以無法從遠端進行。 從遠端處理需要 CLR 的函數,會導致遠端伺服器發生錯誤。
data_type 參數的詳細資訊
data_type 的參數值僅適用於下表所示的類型與樣式。 此處所提供的樣式資訊可以協助您決定所要允許的模式類型。
-- 05_支援的資料類型
如需有關樣式的詳細資訊,請參閱 .NET Framework 文件集中的 System.Globalization.NumberStyles 和 DateTimeStyles 列舉。
參考資料
PARSE (Transact-SQL)
http://msdn.microsoft.com/zh-tw/library/hh213316.aspx
轉換函數 (Transact-SQL)
http://msdn.microsoft.com/zh-tw/library/hh231076
T-SQL:認識日期時間的分隔符號;搭配使用 SET DATEFORMAT、SET LANGUAGE
http://sharedderrick.blogspot.tw/2012/06/t-sql-set-dateformatset-language.html
沒有留言:
張貼留言