SQL Serverでは、TRY_CONVERT()
関数はCONVERT()
と非常によく似ています 関数、ただし TRY_CONVERT()
変換が失敗してもエラーは返されません(CONVERT()
します)。
代わりに、TRY_CONVERT()
関数はNULL
を返します 変換が成功しない場合。
ただし、 TRY_CONVERT()
が発生する場合があります。 エラーが返されます。
構文
構文は次のようになります:
TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )
expression
の場所 変換する式、data_type
は新しいデータ型であり、length
新しいデータ型のオプションの長さです。
style
引数を使用して、関数がexpression
を変換する方法を指定できます。 口論。たとえば、この引数を使用して日付形式を指定できます。
例1-変換が成功する
文字列を10進数に変換する例を次に示します。
SELECT TRY_CONVERT(DECIMAL(5,2), '007');
結果:
7.00
この場合、変換は成功しました。
例2–変換が失敗し、NULL
を返す
変換が失敗し、NULL
の例を次に示します。 返される:
SELECT TRY_CONVERT(DECIMAL(5,2), 'Three');
結果:
NULL
変換に失敗したため、NULL
返されました。
比較として、CONVERT()
を使用すると次のようになります。 TRY_CONVERT()
の代わりに :
SELECT CONVERT(DECIMAL(5,2), 'Three');
結果:
Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.
例3–変換が失敗し、エラーが返される
TRY_CONVERT()
が発生する場合があります エラーを返します。
変換が明示的に許可されていない場合は、エラーが返されます:
SELECT TRY_CONVERT(xml, 10);
結果:
Msg 529, Level 16, State 2, Line 1 Explicit conversion from data type int to xml is not allowed.
例4–style
引数
オプションのstyle
を使用できます 式の変換方法を指定する引数。
例:
SET LANGUAGE British;
SELECT
TRY_CONVERT(date, '09/02/2030') AS "British",
TRY_CONVERT(date, '09/02/2030', 101) AS "US",
TRY_CONVERT(date, '09/02/30', 1) AS "US (short)",
TRY_CONVERT(date, '20300902', 112) AS "ISO",
TRY_CONVERT(date, '09.02.2030', 104) AS "German";
結果:
Changed language setting to British. +------------+------------+--------------+------------+------------+ | British | US | US (short) | ISO | German | |------------+------------+--------------+------------+------------| | 2030-02-09 | 2030-09-02 | 2030-09-02 | 2030-09-02 | 2030-02-09 | +------------+------------+--------------+------------+------------+
ここでは、言語をBritish
に設定しました 、次にTRY_CONVERT()
を実行しました 複数回、それぞれが異なるstyle
を使用 引数(私のセッションのデフォルト言語である英国を使用する最初の引数を除く)。
style引数が式の変換方法に影響を与えることがわかります。
詳細情報
CONVERT()
を参照してください その他の変換例についてはSQLServerで、CONVERT()
vs TRY_CONVERT()
CONVERT()
を比較するためのSQLServer およびTRY_CONVERT()
。
CAST()
については、Microsoftのドキュメントを参照してください。 およびCONVERT()
詳細については、(そのほとんどはTRY_CONVERT()
にも適用されます。 。