TRY_CONVERT (Transact-SQL)
適用於:Microsoft Fabric 中 Microsoft Fabric倉儲中的 SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse AnalyticsAnalytics Platform System (PDW)SQL 分析端點
如果轉換成功,則會傳回轉換為指定之資料類型的值,否則會傳回 Null。
Syntax
TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )
注意
若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔。
引數
data_type [ ( length ) ]
運算式轉換成的資料類型。
expression
要進行轉換的值。
style
這是指定 TRY_CONVERT 函數如何轉譯 expression 的選用性整數運算式。
style 接受與 CONVERT 函數的 style 參數相同的值。 如需詳細資訊,請參閱 CAST 和 CONVERT (Transact-SQL)。
可接受值的範圍由 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
(1 row(s) affected)
下列範例示範運算式必須採用所需的格式。
SET DATEFORMAT dmy;
SELECT TRY_CONVERT(datetime2, '12/31/2010') AS Result;
GO
以下為結果集。
Result
----------------------
NULL
(1 row(s) affected)
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/2010') AS Result;
GO
以下為結果集。
Result
----------------------------------
2010-12-31 00:00:00.0000000
(1 row(s) affected)
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應