共用方式為


TRY_CONVERT (Transact-SQL)

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

如果轉換成功,則傳回轉換成指定數據類型的值;否則會傳 NULL回 。

Transact-SQL 語法慣例

Syntax

TRY_CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

注意

若要檢視 SQL Server 2014 (12.x) 和更早版本的 Transact-SQL 語法,請參閱舊版文件

引數

data_type

運算式轉換成的資料類型。

length

可指定目標資料類型長度的選擇性整數,用於允許使用者指定長度的資料類型。 長度最大值為8,000個字節。

expression

要轉換的值。

style

選擇性的整數表示式,指定函式如何 TRY_CONVERT 轉譯 表達式

style 接受與函式樣式CONVERT參數相同的值。 如需詳細資訊,請參閱 CAST 和 CONVERT

data_type的值會決定可接受的值範圍。 如果 styleNULL,則會 TRY_CONVERTNULL回 。

傳回類型

如果轉換成功,則傳回轉換成指定數據類型的值;否則會傳 NULL回 。

備註

TRY_CONVERT 會取得傳遞給它的值,並嘗試將它轉換成指定的 data_type。 如果轉換成功, TRY_CONVERT 則會傳回值做為指定的 data_type;如果發生錯誤, NULL 則會傳回 。 不過,如果您要求明確不允許的轉換,則 TRY_CONVERT 失敗並出現錯誤。

TRY_CONVERT 是保留關鍵詞,從相容性層級 110開始。

此函式能夠從遠端到具有 SQL Server 2012 (11.x) 和更新版本的伺服器。 它不會從遠端到版本早於 SQL Server 2012 (11.x) 的伺服器。

範例

A. TRY_CONVERT會傳回NULL

下列範例示範 TRY_CONVERT 當轉換失敗時傳回 NULL

SELECT
    CASE WHEN TRY_CONVERT(FLOAT, 'test') IS NULL
    THEN 'Cast failed'
    ELSE 'Cast succeeded'
END AS Result;
GO

以下為結果集。

Result  
------------  
Cast failed

下列範例示範運算式必須採用所需的格式。

SET DATEFORMAT dmy;
SELECT TRY_CONVERT(DATETIME2, '12/31/2022') AS Result;
GO

以下為結果集。

Result  
----------------------  
NULL

B. TRY_CONVERT 失敗並出現錯誤

下列範例示範當 TRY_CONVERT 明確不允許轉換時,傳回錯誤。

SELECT TRY_CONVERT(XML, 4) AS Result;
GO

此語句的結果是錯誤,因為整數無法轉換成 xml 數據類型。

Explicit conversion from data type int to xml is not allowed.

C. TRY_CONVERT 成功

這個範例示範運算式必須採用所需的格式。

SET DATEFORMAT mdy;
SELECT TRY_CONVERT(DATETIME2, '12/31/2022') AS Result;
GO

以下為結果集。

Result
----------------------------------
2022-12-31 00:00:00.0000000