SQL Serverでは、PARSE()
およびTRY_PARSE()
関数は、値を別のデータ型に変換するために使用されます。 1つの例外を除いて、基本的に同じことを行います。エラーへの対処方法。
PARSE()
の場合 別のデータ型に解析しようとすると失敗し、エラーが返されます。 TRY_PARSE()
の場合 失敗すると、NULL
が返されます 。
例1-まず、類似点
必要なデータ型の値を正常に解析できる場合に、両方の関数が同じ結果を返す方法を示す例を次に示します。
SELECT PARSE('Fri, 8 June 2018' AS date) AS PARSE, PARSE('Fri, 8 June 2018' AS date) AS TRY_PARSE;
結果:
+------------+-------------+ | PARSE | TRY_PARSE | |------------+-------------| | 2018-06-08 | 2018-06-08 | +------------+-------------+
予想どおり、どちらもまったく同じ結果を返します。
しかし、必要なデータ型の値を解析できない場合にどうなるか見てみましょう。
例2– PARSE()が失敗した場合
PARSE()
の場合の例を次に示します。 値を別の値に解析できません:
SELECT PARSE('Next year' AS date) AS Result;
結果:
Error converting string value 'Next year' into data type date using culture ''.
要求されたデータ型の有効な表現を提供しなかったため、操作は失敗します。つまり、PARSE()
Next year
を変換できません 日付に 要求に応じたデータ型。
例3– TRY_PARSE()が失敗した場合
TRY_PARSE()
を使用して同じ値を解析しようとした場合の例を次に示します。 :
SELECT TRY_PARSE('Next year' AS date) AS Result;
結果:
+----------+ | Result | |----------| | NULL | +----------+
解析は引き続き失敗しますが、NULL
を返します。 エラーの代わりに。
例4–条件付きステートメントでのTRY_PARSE()の使用
TRY_PARSE()
を取ることができます そしてその戻り値をテストします。 NULL値の場合は、1つを返すことができ、NULL以外の値の場合は、別のものを返すことができます。
SELECT CASE WHEN TRY_PARSE('Next year' AS date) IS NULL THEN 'Conversion failed' ELSE 'Conversion succeeded' END AS Result;
結果:
+-------------------+ | Result | |-------------------| | Conversion failed | +-------------------+
例5–エラーのあるTRY_PARSE()
TRY_PARSE()
という理由だけで 上記の例でエラーが発生するわけではありません。決してないという意味ではありません。 エラーが発生します。この機能を使用している間もエラーが発生する場合があります。
たとえば、culture
として無効な値を指定すると、エラーが発生します 引数:
SELECT TRY_PARSE('Next year' AS date USING 'Mars') AS Result;
結果:
The culture parameter 'Mars' provided in the function call is not supported.
これらの関数に関する注意事項
これらの機能についてMicrosoftが言わなければならない点は次のとおりです。
-
PARSE()
を使用することをお勧めします およびTRY_PARSE()
文字列から日付/時刻および数値タイプに変換する場合のみ。その他のデータ型については、CAST()
を使用してください またはCONVERT()
。 - これらの関数は、.NET Framework共通言語ランタイム(CLR)の存在に依存しています。
- 文字列値の解析には、特定のパフォーマンスオーバーヘッドがあります。
- これらの関数はCLRの存在に依存するため、リモート化されません。 CLRを必要とする機能をリモートしようとすると、リモートサーバーでエラーが発生します。