PARSE (Transact-SQL)

適用於:Sql ServerAzure SQL 資料庫 Azure SQL 受控執行個體 Microsoft Fabric倉儲中的 Azure Synapse AnalyticsSQL 分析端點

傳回轉譯成 SQL Server 中所要求資料類型的運算式結果。

Transact-SQL 語法慣例

Syntax

PARSE ( string_value AS data_type [ USING culture ] )  

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

string_value
nvarchar(4000) 值代表要剖析為指定資料類型的格式化值。

string_value 必須是所要求之資料類型的有效表示法,否則 PARSE 會引發錯誤。

data_type
表示結果之資料類型的常值。

culture
選擇性字串,指出 string_value 要據以格式化的文化特性 (Culture)。

如未提供 culture 引數,將會使用目前工作階段的語言。 此語言是以 SET LANGUAGE 陳述式隱含或明確加以設定。 culture 接受 .NET Framework 所支援的任何文化特性 (Culture),不限於 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 參數的詳細資訊

date_type 的參數值僅適用於下表所示的類型與樣式。 此處所提供的樣式資訊可以協助您決定所要允許的模式類型。 如需樣式的詳細資訊,請參閱說明 System.Globalization.NumberStylesDateTimeStyles 列舉的 .NET Framework 文件。

類別 類型 .NET Framework 類型 使用的樣式
數值 BIGINT Int64 NumberStyles.Number
數值 int Int32 NumberStyles.Number
數值 SMALLINT Int16 NumberStyles.Number
數值 TINYINT Byte NumberStyles.Number
數值 decimal Decimal NumberStyles.Number
數值 NUMERIC Decimal NumberStyles.Number
數值 FLOAT Double NumberStyles.Float
數值 real Single NumberStyles.Float
數值 SMALLMONEY Decimal NumberStyles.Currency
數值 money Decimal NumberStyles.Currency
日期及時間 date Datetime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
日期及時間 time TimeSpan DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
日期及時間 Datetime Datetime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
日期及時間 smalldatetime Datetime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
日期及時間 datetime2 Datetime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
日期及時間 datetimeoffset DateTimeOffset DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal

文化特性 (Culture) 參數的詳細資訊

下表顯示 SQL Server 語言對應的 .NET Framework 文化特性。

全名 Alias LCID 專屬文化特性
us_english 英文 1033 en-US
Deutsch 德文 1031 de-DE
Français 法文 1036 fr-FR
日本語 日文 1041 ja-JP
Dansk 丹麥文 1030 da-DK
Español 西班牙文 3082 es-ES
Italiano 義大利文 1040 it-IT
Nederlands 荷蘭文 1043 nl-NL
Norsk 挪威文 2068 nn-NO
Português 葡萄牙文 2070 pt-PT
Suomi 芬蘭文 1035 fi-FI
Svenska 瑞典文 1053 sv-SE
čeština 捷克文 1029 Cs-CZ
magyar 匈牙利文 1038 Hu-HU
polski 波蘭文 1045 Pl-PL
română 羅馬尼亞文 1048 Ro-RO
hrvatski 克羅埃西亞文 1050 hr-HR
slovenčina 斯洛伐克文 1051 Sk-SK
slovenski 斯洛維尼亞文 1060 Sl-SI
ελληνικά 希臘文 1032 El-GR
български 保加利亞文 1026 bg-BG
русский 俄文 1049 Ru-RU
Türkçe 土耳其文 1055 Tr-TR
British 英式英文 2057 en-GB
eesti 愛沙尼亞文 1061 Et-EE
latviešu 拉脫維亞文 1062 lv-LV
lietuvių 立陶宛文 1063 lt-LT
Português (Brasil) 巴西文 1046 pt-BR
繁體中文 繁體中文 1028 zh-TW
한국어 韓文 1042 Ko-KR
简体中文 簡體中文 2052 zh-CN
阿拉伯文 阿拉伯文 1025 ar-SA
ไทย 泰文 1054 Th-TH

範例

A. 剖析為 datetime2

SELECT PARSE('Monday, 13 December 2010' AS datetime2 USING 'en-US') AS Result;  

以下為結果集。

Result  
---------------  
2010-12-13 00:00:00.0000000  
  
(1 row(s) affected)  

B. 使用貨幣符號進行剖析

SELECT PARSE('€345,98' AS money USING 'de-DE') AS Result;  

以下為結果集。

Result  
---------------  
345.98  
  
(1 row(s) affected)  

C. 使用語言的隱含設定進行剖析

-- The English language is mapped to en-US specific culture  
SET LANGUAGE 'English';  
SELECT PARSE('12/16/2010' AS datetime2) AS Result;  

以下為結果集。

Result  
---------------  
2010-12-16 00:00:00.0000000  
  
(1 row(s) affected)