T-SQLにはCONVERT()
の両方が含まれていることに気付いたかもしれません。 関数とTRY_CONVERT()
SQLServerでデータ型間の変換を実行するために使用できる関数。ただし、これら2つの機能の違いについて頭を悩ませている場合は、読み進めてください。
CONVERT()
の違い およびTRY_CONVERT()
変換できないデータ型を処理する方法です。 1つはエラーをスローし、もう1つはnullを返します。次の例はこれを示しています。
CONVERT()関数
まず、CONVERT()
が何であるかを見てみましょう。 関数は行います。あるデータ型を別のデータ型に変換します。次に例を示します:
SELECT 'Comments: ' + CONVERT(varchar(12), 9) AS Result;
結果:
Result ----------- Comments: 9
この例では、int
を変換します varchar(12)
の値 。また、値を目的のデータ型と長さに変換できたため、これは完全に機能しました。
ただし、これは変換が成功した場合は完全に機能しますが、失敗した場合はどうなりますか?
変換に失敗した場合→エラー
コードを少し調整して、変換が失敗したときに何が起こるかを見てみましょう。
SELECT 'Comments: ' + CONVERT(varchar(1), 10.00) AS Result;
結果:
Error: Arithmetic overflow error converting numeric to data type varchar.
エラーが発生します。
TRY_CONVERT()関数
TRY_CONVERT()
エラーメッセージを防ぐために使用できる代替手段です。この関数は、CONVERT()
と同じデータ変換操作を実行します ただし、この関数が変換を実行できない場合は、null
を返します。 :
SELECT 'Comments: ' + TRY_CONVERT(varchar(1), 10.00) AS Result;
結果:
Result ------ null
この結果を取得して条件付きコードを適用すると、変換が成功したかどうかによって異なることが起こります。
例:
SELECT CASE WHEN TRY_CONVERT(varchar(1), 10.00) IS NULL THEN 'Conversion failed' ELSE 'Conversion succeeded' END AS Result;
結果:
Result ----------------- Conversion failed
無効なデータ型
TRY_CONVERT()
に関する1つの注意点 これは、有効なデータ型を使用する場合にのみこのように機能するということです。したがって、許可されていないデータ型を明示的に指定すると、エラーが発生します。
例:
SELECT 'Comments: ' + TRY_CONVERT(Homer, 10.00) AS Result;
結果:
Error: Type Homer is not a defined system type.