TRY_CAST (Transact-SQL)
Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric のウェアハウス
指定されたデータ型へのキャストが成功した場合は、キャストされる値が返されます。それ以外の場合は、null が返されます。
構文
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
と同じです。
長さが 8000 を超える場合、TRY_CAST
は 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)