TRY_CONVERT (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_CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
引数
data_type
expression をキャストするデータ型。
length
データ型でユーザー指定の長さが許可されるとき、ターゲット データ型の長さを指定する任意の整数。 length の最大値は 8,000 バイトです。
式 (expression)
キャストする値。
スタイル
TRY_CONVERT
関数で expression を変換する方法を指定する省略可能な整数式。
style は、CONVERT
関数の style パラメーターと同じ値を受け取ります。 詳しくは、「CAST および CONVERT」をご覧ください。
data_typeの値によって、許容される値の範囲が決まります。 styleがNULL
の場合、TRY_CONVERT
はNULL
を返します。
戻り値の型
キャストが成功した場合は、指定したデータ型にキャストされた値を返します。それ以外の場合は、 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