適用於:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Microsoft Fabric
中的 SQL 分析端點Microsoft Fabric
中的倉庫Microsoft Fabric 中的 SQL 資料庫
回傳一個表達式的結果,轉換成請求的資料型別,或 NULL 在 SQL Server 投射失敗時回傳。 僅用於 TRY_PARSE 從字串轉換成日期/時間和數字類型。
語法
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 從字串轉換成日期/時間和數字類型。 一般型別轉換時,繼續使用 CAST 或 CONVERT。 請記住,解析字串值會帶來一定的效能負擔。
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。