sql >> データベース >  >> RDS >> Sqlserver

SQL ServerのCONVERT()とTRY_CONVERT:違いは何ですか?

    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.


    1. SQLの別の列の各値の最も一般的な値を取得します

    2. SQLステートメントまたはストアドプロシージャから外部データベースに接続するにはどうすればよいですか?

    3. MySQLで値に少なくとも1桁の数字が含まれているかどうかを検出する方法

    4. EntityFrameworkをインストールせずに動作するようにODP.NETをデプロイおよび構成する