TRY_CONVERT (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 的 SQL 端點分析 Microsoft Fabric 的倉儲
如果轉換成功,則傳回轉換成指定數據類型的值;否則會傳 NULL
回 。
語法
TRY_CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
引數
data_type
運算式轉換成的資料類型。
length
可指定目標資料類型長度的選擇性整數,用於允許使用者指定長度的資料類型。 長度的最大值為8,000個字節。
expression
要轉換的值。
style
選擇性的整數表示式,指定函式如何 TRY_CONVERT
轉譯 表達式。
style 接受與函式樣式CONVERT
參數相同的值。 如需詳細資訊,請參閱 CAST 和 CONVERT。
data_type的值會決定可接受的值範圍。 如果 style 為 NULL
,則會 TRY_CONVERT
傳 NULL
回 。
傳回類型
如果轉換成功,則傳回轉換成指定數據類型的值;否則會傳 NULL
回 。
備註
TRY_CONVERT
會取得傳遞給它的值,並嘗試將它轉換成指定的 data_type。 如果轉換成功, TRY_CONVERT
則會傳回值做為指定的 data_type;如果發生錯誤, NULL
則會傳回 。 不過,如果您要求明確不允許的轉換,則 TRY_CONVERT
失敗並出現錯誤。
TRY_CONVERT
是保留關鍵詞,從相容性層級 110
開始。
此函式能夠從遠端到具有 SQL Server 2012 (11.x) 和更新版本的伺服器。 它不會從遠端到版本早於 SQL Server 2012 (11.x) 的伺服器。
範例
A. TRY_CONVERT會傳回NULL
下列範例示範 TRY_CONVERT
當轉換失敗時傳回 NULL
。
SELECT
CASE WHEN TRY_CONVERT(FLOAT, 'test') IS NULL
THEN 'Cast failed'
ELSE 'Cast succeeded'
END AS Result;
GO
結果集如下所示。
Result
------------
Cast failed
下列範例示範運算式必須採用所需的格式。
SET DATEFORMAT dmy;
SELECT TRY_CONVERT(DATETIME2, '12/31/2022') AS Result;
GO
結果集如下所示。
Result
----------------------
NULL
B. TRY_CONVERT 失敗並出現錯誤
下列範例示範當 TRY_CONVERT
明確不允許轉換時,傳回錯誤。
SELECT TRY_CONVERT(XML, 4) AS Result;
GO
此語句的結果是錯誤,因為整數無法轉換成 xml 數據類型。
Explicit conversion from data type int to xml is not allowed.
C. TRY_CONVERT 成功
這個範例示範運算式必須採用所需的格式。
SET DATEFORMAT mdy;
SELECT TRY_CONVERT(DATETIME2, '12/31/2022') AS Result;
GO
結果集如下所示。
Result
----------------------------------
2022-12-31 00:00:00.0000000