TRY_CAST (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 的 SQL 端點分析 Microsoft Fabric 的倉儲
如果轉換成功,則會傳回轉換為指定之資料類型的值,否則會傳回 Null。
語法
TRY_CAST ( expression AS data_type [ ( length ) ] )
引數
expression
指定要轉換的任何有效運算式。
data_type
運算式轉換成的資料類型。
length
指定目標資料類型之長度的選擇性整數。
可接受值的範圍由 data_type 值決定。
傳回類型
如果轉換成功,則會傳回轉換為指定之資料類型的值,否則會傳回 Null。
備註
TRY_CAST
會取得傳遞給它的值,並嘗試將它轉換成指定的 data_type。 如果轉換成功, TRY_CAST
則會傳回值做為指定的 data_type;如果發生錯誤,則會傳回 null。 不過,如果您要求明確不允許的轉換,則 TRY_CAST
失敗並出現錯誤。
TRY_CAST
不是新的保留關鍵詞,而且適用於所有相容性層級。 TRY_CAST
具有與 TRY_CONVERT
連線到遠端伺服器時相同的語意。
TRY_CAST
如果長度超過 8000,則不適用於 varchar(max )。
範例
A. TRY_CAST 傳回 null
下列範例示範 TRY_CAST
在轉換失敗時傳回 Null。
SELECT
CASE WHEN TRY_CAST('test' AS FLOAT) IS NULL
THEN 'Cast failed'
ELSE 'Cast succeeded'
END AS Result;
GO
結果集如下所示。
Result
------------
Cast failed
(1 row(s) affected)
下列範例示範運算式必須採用所需的格式。
SET DATEFORMAT dmy;
SELECT TRY_CAST('12/31/2022' AS DATETIME2) AS Result;
GO
結果集如下所示。
Result
----------------------
NULL
(1 row(s) affected)
B. TRY_CAST 失敗並出現錯誤
下列範例示範當 TRY_CAST
明確不允許轉換時,傳回錯誤。
SELECT TRY_CAST(4 AS XML) AS Result;
GO
此語句的結果是錯誤,因為整數無法轉換成 xml 數據類型。
Explicit conversion from data type int to xml is not allowed.
C. TRY_CAST 成功
這個範例示範運算式必須採用所需的格式。
SET DATEFORMAT mdy;
SELECT TRY_CAST('12/31/2022' AS DATETIME2) AS Result;
GO
結果集如下所示。
Result
----------------------------------
2022-12-31 00:00:00.0000000
(1 row(s) affected)