適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
Azure Synapse Analytics
分析平台系統(PDW)
Microsoft Fabric 中的 SQL 分析端點
Microsoft Fabric 中的倉儲
Microsoft Fabric 中的 SQL 資料庫
如果轉換成功,則會傳回轉換為指定之資料類型的值,否則會傳回 Null。
語法
TRY_CAST ( expression AS data_type [ ( length ) ] )
引數
expression
指定要轉換的任何有效運算式。
data_type
運算式轉換成的資料類型。 此值決定可接受值的範圍。
length
指定目標資料類型之長度的選擇性整數。
傳回類型
如果轉換成功,則會傳回轉換為指定之資料類型的值,否則會傳回 Null。
備註
TRY_CAST 會取得傳遞給它的值,並嘗試將它轉換成指定的 data_type。 如果轉換成功, TRY_CAST 則會傳回值做為指定的 data_type;如果發生錯誤,則會傳回 null。 不過,如果您要求明確不允許的轉換,則 TRY_CAST 失敗並出現錯誤。
TRY_CAST 不是新的保留關鍵詞,而且適用於所有相容性層級。
TRY_CAST 具有與 TRY_CONVERT 連線到遠端伺服器時相同的語意。
TRY_CAST 在下列情況下不適用於 運算式 :
- varchar(max) 如果長度超過 8,000
- nvarchar(max) 如果長度超過 4,000
範例
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此查詢回傳結果為
Cast failed。下列範例示範運算式必須採用所需的格式。
SET DATEFORMAT dmy; SELECT TRY_CAST('12/31/2022' AS DATETIME2) AS Result; GO此查詢回傳結果為
NULL。
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
此查詢回傳結果為 2022-12-31 00:00:00.0000000。