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

TRY_CONVERT()がSQLServerでどのように機能するか

    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()にも適用されます。 。


    1. PostgreSQLの範囲内の日付リストを取得する

    2. WHERE IN(IDの配列)

    3. SQL ServerのFILE_ID()とFILE_IDEX()の違い:違いは何ですか?

    4. MySQLが集計関数なしでgroupbyクエリを許可するのはなぜですか?