共用方式為


TRY_PARSE(Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的倉庫Microsoft Fabric 中的 SQL 資料庫

回傳一個表達式的結果,轉換成請求的資料型別,或 NULL 在 SQL Server 投射失敗時回傳。 僅用於 TRY_PARSE 從字串轉換成日期/時間和數字類型。

Transact-SQL 語法慣例

語法

TRY_PARSE ( string_value AS data_type [ USING culture ] )

引數

string_value

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

string_value 必須是所請求資料型態的有效表示,否則 TRY_PARSE 回傳為空。

data_type

以文字表示結果所要求的資料類型。

culture

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

如果未提供文化特性自變數,則會使用目前會話的語言。 此語言可透過使用 SET LANGUAGE 陳述來隱含或顯式設定。 culture 接受任何由 .NET Framework 支援的文化。 它不限於 SQL Server 明確支援的語言。 如果文化特性自變數無效,PARSE則會引發錯誤。

傳回類型

回傳表達式的結果,轉換成請求的資料型態,或 NULL 在投射失敗時。

備註

僅用於 TRY_PARSE 從字串轉換成日期/時間和數字類型。 一般型別轉換時,繼續使用 CASTCONVERT。 請記住,解析字串值會帶來一定的效能負擔。

TRY_PARSE 依賴於 .NET Framework 通用語言執行環境(CLR)的存在。

此函式無法遠端,因為它取決於CLR的存在。 從遠端處理需要 CLR 的函數,會導致遠端伺服器發生錯誤。

關於參數 data_type 的更多資訊

date_type 的參數值僅適用於下表所示的類型與樣式。 此處所提供的樣式資訊可以協助您決定所要允許的模式類型。 欲了解更多樣式相關資訊,請參閱 .NET Framework 文件System.Globalization.NumberStylesDateTimeStyles中的列舉與列舉。

類別 類型 .NET 類型 使用的樣式
數值 bigint Int64 NumberStyles.Number
數值 int Int32 NumberStyles.Number
數值 smallint Int16 NumberStyles.Number
數值 tinyint Byte NumberStyles.Number
數值 decimal Decimal NumberStyles.Number
數值 numeric Decimal NumberStyles.Number
數值 浮動 Double NumberStyles.Float
數值 真實 Single NumberStyles.Float
數值 smallmoney Decimal NumberStyles.Currency
數值 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
葡萄牙語(巴西) 巴西文 1046 pt-BR
繁體中文 繁體中文 1028 zh-TW
한국어 韓文 1042 Ko-KR
简体中文 簡體中文 2052 zh-CN
阿拉伯文 阿拉伯文 1025 ar-SA
ไทย 泰文 1054 Th-TH

範例

A. 基本TRY_PARSE例子

SELECT TRY_PARSE ('Jabberwokkie' AS DATETIME2 USING 'en-US') AS Result;

此查詢回傳結果為 NULL

B. 用TRY_PARSE偵測空

SELECT
CASE WHEN TRY_PARSE ('Aragorn' AS DECIMAL USING 'sr-Latn-CS') IS NULL
     THEN 'True'
     ELSE 'False'
END AS Result;

此查詢回傳結果為 True

C. 使用 IIF,搭配 TRY_PARSE 和隱含文化設定

SET LANGUAGE English;

SELECT IIF (TRY_PARSE ('01/01/2011' AS DATETIME2) IS NULL, 'True', 'False') AS Result;

此查詢回傳結果為 False