共用方式為


TRY_CAST (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse Analytics分析平台系統(PDW)Microsoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的倉儲Microsoft Fabric 中的 SQL 資料庫

如果轉換成功,則會傳回轉換為指定之資料類型的值,否則會傳回 Null。

Transact-SQL 語法慣例

語法

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