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

SQLServerで数値をフォーマットする方法

    SQL Server 2012以降では、T-SQL FORMAT()を使用して数値型をフォーマットできます。 働き。この関数は3つの引数を受け入れます。数、形式、およびオプションの「文化」引数。

    タイプnvarcharのフォーマットされた文字列を返します 。

    フォーマットはフォーマット文字列として提供されます。フォーマット文字列は、出力のフォーマット方法を定義します。

    次に例を示します:

    SELECT FORMAT(1, 'N');
    

    結果:

    1.00
    

    この場合、Nを使用しました 2番目の引数として。これは、数値の標準の数値形式指定子です。この特定のフォーマット指定子(N )結果として、出力は整数桁と10進数、グループ区切り文字、およびオプションの負の符号付きの小数点記号でフォーマットされます。この引数では大文字と小文字が区別されないため、N またはn 大丈夫です。

    小数点以下の桁数

    別の例を次に示します。今回はN1を使用します 小数点以下1桁のみが必要であることを指定するには:

    SELECT FORMAT(1, 'N1');
    

    結果:

    1.0
    

    ただし、小数点以下の桁数を増やすこともできます:

    SELECT FORMAT(1, 'N7');
    

    結果:

    1.0000000
    

    これらの例では、1 および7 精度指定子として知られています 。

    精密指定子はオプションです。結果の精度を指定する0〜99の値にすることができます。どのように機能するかは、使用されているフォーマット指定子によって異なります。一部の形式指定子では、結果の合計桁数を指定し、その他の形式指定子では、小数点以下の桁数を指定します。それ以外の場合は、完全に無視されます。精度指定子が各形式指定子からの出力にどのように影響するかについては、標準数値形式指定子の完全なリストを参照してください。

    パーセント

    次の例では、Pを使用しています 引数。数値をパーセンテージ値としてフォーマットします。数値に100を掛けてから、ローカライズされたパーセント記号を追加します。

    SELECT 
        FORMAT(1, 'P') AS 'Example 1', 
        FORMAT(.375, 'P') AS 'Example 2', 
        FORMAT(.0375, 'P', 'tr-tr') AS 'Example 3';
    

    結果:

    Example 1  Example 2  Example 3
    ---------  ---------  ---------
    100.00 %   37.50 %    %3,75   
    

    「例3」には、出力で使用されるカルチャを指定する3番目の引数が含まれていることに注意してください。この場合、私はtr-trを使用します トルコ語の場合。これにより、パーセント記号が(他のように追加されるのではなく)数値の前に追加されます。また、小数点記号としてコンマが使用されます。

    「文化」の議論を提供しない場合は、現在のセッションの言語が使用されます。

    ご想像のとおり、現在の言語や「文化」の議論の価値によって、まったく異なる結果が得られる可能性があります。その他の例については、言語設定がFORMAT()の結果にどのように影響するかをご覧ください。

    通貨

    Cを使用できます 通貨の値を返します。

    SELECT FORMAT(1, 'C');
    

    結果:

    $1.00
    

    3番目のパラメータとしてロケールを追加することもできます。

    次にいくつかの例を示します。

    SELECT 
        FORMAT(1, 'C', 'fr-FR') AS France, 
        FORMAT(1, 'C', 'th-TH') AS Thailand, 
        FORMAT(1, 'C', 'ja-JP') AS Japan;
    

    結果:

    France  Thailand  Japan
    ------  --------  -----
    1,00 €  ฿1.00     ¥1   
    

    指数関数的(科学的)

    Eを使用できます 指数表記を指定します。

    SELECT FORMAT(1234.56789, 'E');
    

    結果:

    1.234568E+003  
    

    16進数

    数値を16進数としてフォーマットすることもできます。これを行うには、Xを使用します 引数:

    SELECT FORMAT(10, 'X');
    

    結果:

    A
    

    16進数は基数16です。したがって、カウントは1、2、3、4、5、6、7、8、9、A、B、C、D、E、Fになり、再開します(たとえば、16進数の10は同等です) 10進数で16、11は17などに相当します)。そのため、ここでの例はAになります 、16進数であるため、A 9の後に来る 。

    別の例を次に示します。今回は数値を大きくします:

    SELECT FORMAT(7145, 'X');
    

    結果:

    1BE9
    

    カスタムフォーマット

    カスタム数値フォーマット文字列を使用して、独自のカスタムフォーマットを作成することもできます。これは、番号のパターンを提供する一連のカスタム数値形式指定子で構成されています。

    これは例で簡単に説明できます:

    SELECT FORMAT(123456789, '##-###-####');
    

    結果:

    12-345-6789
    

    この場合、数字のプレースホルダー(#)を使用します )。数字のプレースホルダーを使用すると、#を使用して数値の形式を指定できます。 各番号のプレースホルダーとしての記号。

    カンマ

    別の例:

    SELECT FORMAT(123456789, '#,#');
    

    結果:

    123,456,789
    

    先行ゼロ

    別のカスタム数値形式指定子はゼロ(0 )。これを使用して、先行ゼロで数値を埋めることができます:

    SELECT
        FORMAT(7, '000') AS 'Example 1',
        FORMAT(123, '0000') AS 'Example 2',
        FORMAT(123, '00000') AS 'Example 3';
    

    結果:

    Example 1  Example 2  Example 3
    ---------  ---------  ---------
    007        0123       00123    
    

    ゼロを削除するためにも使用できます:

    SELECT 
        FORMAT(0123, '000') AS 'Example 1',
        FORMAT(0123, '0000') AS 'Example 2',
        FORMAT(000123, '00000') AS 'Example 3';
    

    結果:

    Example 1  Example 2  Example 3
    ---------  ---------  ---------
    123        0123       00123    
    

    数値形式指定子リファレンス

    次の記事には、FORMAT()で使用できるすべての数値形式指定子が含まれています。 関数とT-SQLの例。

    • 標準の数値形式の文字列
    • カスタム数値形式文字列

    これらは、.NET Frameworkでサポートされているのと同じ形式指定子です(FORMAT() 関数は.NETFrameworkに依存しています。

    日付と時刻

    FORMAT() この機能を使用すると、日付と時刻をフォーマットすることもできます。

    日付と時刻には、個別のフォーマット指定子のセットがあります:

    • 標準の日付と時刻の形式の文字列
    • カスタムの日付と時刻の形式の文字列

    1. Oracleで休止状態:StringプロパティをCLOB列にマッピング

    2. HH:MM:SSの日付間のOracleSQL時間の違い

    3. postgresql戻り値がnullの場合は0を返します

    4. libpq.5.dylibの間違ったコピーにリンクしているRuby'pg'gem(OSX上)