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

SQL ServerのCONVERT()

    SQL Serverでは、 CONVERT() 関数は、あるデータ型の式を別のデータ型に変換します。

    関数の概要と例を次に示します。

    構文

    構文は次のようになります:

    CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) 

    expressionの場所 変換する式、 data_type は新しいデータ型であり、 length 新しいデータ型のオプションの長さです。

    オプションのスタイル 引数を使用して、関数が expressionを変換する方法を指定できます。 口論。たとえば、この引数を使用して日付形式を指定できます。

    文字列を10進数に変換する例を次に示します。

    SELECT CONVERT(DECIMAL(5,2), '007');

    結果:

    7.00

    現在までの文字列

    文字列を日付にキャストする例は次のとおりです。

    SELECT CONVERT(date, '09 Feb 2030');

    結果:

    2030-02-09

    この場合、 CONVERT() 関数は、認識できる形式で日付を指定したため、どの日付部分がどれであるかを判別できました。

    日付としてキャストできない値を渡すと、エラーが発生します:

    SELECT CONVERT(date, 'My Birthday');

    結果:

    Msg 241, Level 16, State 1, Line 1
    Conversion failed when converting date and/or time from character string.

    ロケール

    現在のセッションの言語は、日付の解釈方法に違いをもたらす可能性があります。

    英国の言語を使用すると、次のようになります。

    SET LANGUAGE British;
    SELECT CONVERT(date, '09/02/2030');

    結果:

    2030-02-09

    この場合、日付は2月9日であると解釈されました。

    言語をus_Englishに変更しましょう :

    SET LANGUAGE us_English;
    SELECT CONVERT(date, '09/02/2030');

    結果:

    2030-09-02

    今回は、日付を9月の2日目と解釈しました。

    スタイル 引数

    オプションのstyleを使用できます 式の変換方法を指定する引数。

    例:

    SET LANGUAGE British;
    SELECT 
        CONVERT(date, '09/02/2030') AS "British",
        CONVERT(date, '09/02/2030', 101) AS "US",
        CONVERT(date, '09/02/30', 1) AS "US (short)",
        CONVERT(date, '20300902', 112) AS "ISO",
        CONVERT(date, '09.02.2030', 104) AS "German";

    結果:

    +------------+------------+--------------+------------+------------+
    | British    | US         | US (short)   | ISO        | German     |
    |------------+------------+--------------+------------+------------|
    | 2030-02-09 | 2030-09-02 | 2030-09-02   | 2030-09-02 | 2030-02-09 |
    +------------+------------+--------------+------------+------------+

    文字列の連結

    値を文字列と連結するために数値を文字列にキャストする例を次に示します。

    SELECT 'Age: ' + CONVERT(varchar(10), 27);

    結果:

    Age: 27

    最初に変換しないとどうなりますか:

    SELECT 'Age: ' + 27;

    結果:

    Msg 245, Level 16, State 1, Line 1
    Conversion failed when converting the varchar value 'Age: ' to data type int.

    2つの値を異なるデータ型で連結しようとする場合、SQL Serverは、一方の値を暗黙的に変換して、もう一方のデータ型を使用する必要があります。これにより、連結を実行する前に、両方が同じデータ型になります。この変換を行うには、データ型の優先順位の規則に従います。

    SQL Serverでは、 int データ型はvarcharよりも優先されます 。

    したがって、上記の例では、SQL Serverは文字列を整数に変換しようとしますが、文字列を整数に変換できないため、これは失敗します。

    テキストの切り捨て

    CONVERT()で実行できる便利なトリックの1つ 関数は、長い文字列をより読みやすい長さに切り捨てることです。

    データベーステーブルから選択されたテキストを切り捨てる例を次に示します。

    SELECT
        ProductName,
        CONVERT(varchar(20), ProductName) AS Truncated
    FROM Products;

    結果:

    +---------------------------------+----------------------+
    | ProductName                     | Truncated            |
    |---------------------------------+----------------------|
    | Left handed screwdriver         | Left handed screwdri |
    | Long Weight (blue)              | Long Weight (blue)   |
    | Long Weight (green)             | Long Weight (green)  |
    | Sledge Hammer                   | Sledge Hammer        |
    | Chainsaw                        | Chainsaw             |
    | Straw Dog Box                   | Straw Dog Box        |
    | Bottomless Coffee Mugs (4 Pack) | Bottomless Coffee Mu |
    | Right handed screwdriver        | Right handed screwdr |
    +---------------------------------+----------------------+

    詳細情報

    CONVERT() 関数はCAST()と同じように機能します 関数、および多くのデータ変換はどちらかを使用して行うことができます。とはいえ、それらの間には違いがあります。

    CAST()については、Microsoftのドキュメントを参照してください。 およびCONVERT() この関数の使用の詳細については、


    1. PostgreSQLのarray_agg関数をSQLiteに変換する方法は?

    2. OracleのOVER句

    3. DateTimeオブジェクトの異なるtimezone_types

    4. SQL Serverで一括挿入を使用してUTF-8文字を書き込む方法は?