共用方式為


TRY_CAST (Transact-SQL)

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

適用於:SQL Server (SQL Server 2012 至目前版本)、Windows Azure SQL 資料庫 (初始版本至目前版本)。

主題連結圖示 Transact-SQL 語法慣例

語法

TRY_CAST ( expression AS data_type [ ( length ) ] )

引數

  • expression
    要進行轉換的值。 任何有效的運算式。
  • data_type
    expression 轉換成的資料類型。

  • length
    指定目標資料類型之長度的選擇性整數。

    可接受值的範圍由 data_type 值決定。

傳回類型

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

備註

TRY_CAST 會採用傳遞給它的值,然後會嘗試將該值轉換為指定的 data_type。 如果轉換成功,TRY_CAST 會傳回當做指定之 data_type 的值;如果發生錯誤則會傳回 Null。 但是,若您要求明確不允許的轉換,則 TRY_CAST 會失敗並出現錯誤。

TRY_CAST 不是新的保留關鍵字,而且可在所有相容性層級使用。 當連接到遠端伺服器時,TRY_CAST 的語意與 TRY_CONVERT 相同。

範例

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/2010' 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/2010' AS datetime2) AS Result;
GO

以下為結果集:

Result
----------------------------------
2010-12-31 00:00:00.0000000

(1 row(s) affected)

請參閱

參考

TRY_CONVERT (Transact-SQL)

CAST 和 CONVERT (Transact-SQL)