次の方法で共有


TRY_CONVERT (Transact-SQL)

キャストが成功した場合は、指定したデータ型にキャストされた値を返します。それ以外の場合は null を返します。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

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

引数

  • data_type [ ( length ) ]
    expression をキャストするデータ型。

  • expression
    キャストされる値。

  • style
    TRY_CONVERT 関数が expression を変換する方法を指定する省略可能な整数式。

    style は、CONVERT 関数の style パラメーターと同じ値を使用します。 詳細については、「CAST および CONVERT (Transact-SQL)」を参照してください。

    許容される値の範囲は、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 以上のバージョンがインストールされているサーバーに対してリモート処理が可能です。 SQL Server 2012 より前のバージョンをインストールしているサーバーには、リモート処理が行われません。

使用例

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

(1 row(s) affected)

次の例は、特定の形式の式が必要であることを示しています。

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

以下に結果セットを示します。

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

(1 row(s) affected)

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

以下に結果セットを示します。

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

(1 row(s) affected)

関連項目

参照

CAST および CONVERT (Transact-SQL)