分享方式:


TRY_CAST (Transact-SQL)

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 的 SQL 端點分析 Microsoft Fabric 的倉儲

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

Transact-SQL 語法慣例

語法

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)

另請參閱