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

SQL ServerのFORMAT()でサポートされている標準の数値形式の文字列

    この記事では、FORMAT()を使用して数値をフォーマットするときに使用できる標準の数値フォーマット指定子のリファレンスを提供します。 SQLServerの関数。例が含まれています。

    一部の例では、精度指定子を使用しています(これらは、フォーマット指定子に1桁または2桁の数字が追加されたものです)。精度指定子は、結果の精度を指定する0〜99の値にすることができます。どのように機能するかは、使用されているフォーマット指定子によって異なります。一部の形式指定子では、結果の合計桁数を指定し、その他の形式指定子では、小数点以下の桁数を指定します。それ以外の場合は、完全に無視されます。

    フォーマット文字列
    説明/例
    C またはc

    通貨 。数値を通貨額を表す文字列に変換します。

    オプションの精度指定子を使用して、小数点以下の桁数を指定できます。

    例(さまざまな文化を使用)

    SELECT 
      FORMAT(12.34, 'C', 'en-us') R1,
      FORMAT(012.34, 'C', 'iv') R2,
      FORMAT(12.34, 'C0', 'ja-jp') R3,
      FORMAT(12.54, 'c', 'vi-vn') R4,
      FORMAT(12.54, 'c0', 'en-au') R5,
      FORMAT(12.54, 'c4', 'en-gb') R6;
    +--------+--------+------+---------+------+----------+
    | R1     | R2     | R3   | R4      | R5   | R6       |
    |--------+--------+------+---------+------+----------|
    | $12.34 | ¤12.34 | ¥12  | 12,54 ₫ | $13  | £12.5400 |
    +--------+--------+------+---------+------+----------+
    
    D またはd

    10進数 。数値を10進数の文字列(0〜9)に変換し、数値が負の場合はマイナス記号を前に付けます。この形式は、整数型でのみサポートされています。

    (オプションの)精度指定子を使用する場合は、結果の合計桁数を指定します。数字の桁数がそれほど多くない場合は、左側にゼロが埋め込まれます。

    SELECT 
      FORMAT(123, 'D') R1,
      FORMAT(123, 'D0') R2,
      FORMAT(123, 'D3') R3,
      FORMAT(123, 'd4') R4,
      FORMAT(0123, 'd5') R5,
      FORMAT(1.23, 'd') R6;
    +------+------+------+------+-------+------+
    | R1   | R2   | R3   | R4   | R5    | R6   |
    |------+------+------+------+-------+------|
    | 123  | 123  | 123  | 0123 | 00123 | NULL |
    +------+------+------+------+-------+------+
    
    E またはe

    指数関数的(科学的) 。数値を「-d.ddd…E+ddd」または「-d.ddd…e+ddd」の形式の文字列に変換します。各「d」は数字(0〜9)を示します。数値が負の場合、文字列はマイナス記号で始まります。正確に1桁は常に小数点の前にあります。

    精度指定子を使用する場合は、小数点の右側の桁数を指定します。省略した場合、小数点の右側に6桁の数字が表示されます。

    SELECT 
      FORMAT(1024.1234567, 'E') R1,
      FORMAT(1024.1234567, 'E0') R2,
      FORMAT(1024.1234567, 'E3') R3,
      FORMAT(1024.1234567, 'e4') R4,
      FORMAT(1024.1234567, 'e7') R5;
    +---------------+--------+------------+-------------+----------------+
    | R1            | R2     | R3         | R4          | R5             |
    |---------------+--------+------------+-------------+----------------|
    | 1.024123E+003 | 1E+003 | 1.024E+003 | 1.0241e+003 | 1.0241235e+003 |
    +---------------+--------+------------+-------------+----------------+
    
    F またはf

    固定小数点 。数値を「-ddd.ddd…」の形式の文字列に変換します。各「d」は数字(0〜9)を示します。数値が負の場合、文字列はマイナス記号で始まります。

    オプションの精度指定子を使用して、小数点以下の桁数を指定できます。

    SELECT 
      FORMAT(12.345, 'F', 'en-us') R1,
      FORMAT(12.345, 'F0', 'en-us') R2,
      FORMAT(12.345, 'f3', 'en-us') R3,
      FORMAT(12.345, 'f4', 'en-us') R4,
      FORMAT(12.345, 'f5', 'en-us') R5,
      FORMAT(12.345, 'f', 'vi-vn') R6;
    +-------+------+--------+---------+----------+-------+
    | R1    | R2   | R3     | R4      | R5       | R6    |
    |-------+------+--------+---------+----------+-------|
    | 12.35 | 12   | 12.345 | 12.3450 | 12.34500 | 12,35 |
    +-------+------+--------+---------+----------+-------+
    
    G またはg

    一般 。数値のタイプと精度指定子が存在するかどうかに応じて、数値を固定小数点表記または科学的記数法のよりコンパクトなものに変換します。

    (オプションの)精度指定子を使用すると、結果文字列に表示できる有効数字の最大数が定義されます。省略した場合、または値がゼロの場合、精度は数値タイプによって決定されます。

    数値タイプが精度にどのように影響するかについては、公式の.NETドキュメントを参照してください。 FORMAT()の公式ドキュメントと相互参照する必要がある場合があります 各.NET数値タイプがT-SQL数値タイプにどのようにマップされるかを確認するため。

    SELECT 
      FORMAT(12.345, 'G', 'en-us') R1,
      FORMAT(12.345, 'G0', 'en-us') R2,
      FORMAT(12.345, 'g3', 'en-us') R3,
      FORMAT(12.345, 'g4', 'en-us') R4,
      FORMAT(12.345, 'g5', 'en-us') R5,
      FORMAT(12.345, 'g', 'vi-vn') R6;
    +--------+--------+------+-------+--------+--------+
    | R1     | R2     | R3   | R4    | R5     | R6     |
    |--------+--------+------+-------+--------+--------|
    | 12.345 | 12.345 | 12.3 | 12.35 | 12.345 | 12,345 |
    +--------+--------+------+-------+--------+--------+
    
    N またはn

    番号 。数値を「-d、ddd、ddd.ddd…」の形式の文字列に変換します。

    (オプションの)精度指定子を使用すると、小数点の右側の桁数が定義されます。

    SELECT 
      FORMAT(1234.56, 'N', 'en-us') R1,
      FORMAT(1234.56, 'N0', 'en-us') R2,
      FORMAT(1234.56, 'n3', 'en-us') R3,
      FORMAT(1234.56, 'n4', 'en-us') R4,
      FORMAT(1234.56, 'n', 'vi-vn') R5;
    +----------+-------+-----------+------------+----------+
    | R1       | R2    | R3        | R4         | R5       |
    |----------+-------+-----------+------------+----------|
    | 1,234.56 | 1,235 | 1,234.560 | 1,234.5600 | 1.234,56 |
    +----------+-------+-----------+------------+----------+
    
    P またはp

    パーセント 。数値に100を掛けて、パーセンテージを表す文字列に変換します。

    精度指定子を使用する場合は、小数点以下の桁数を定義します。

    SELECT 
      FORMAT(.1234, 'P', 'en-us') R1,
      FORMAT(.1234, 'P0', 'en-us') R2,
      FORMAT(.1250, 'p0', 'en-us') R3,
      FORMAT(.1250, 'p3', 'en-us') R4,
      FORMAT(.1250, 'p', 'vi-vn') R5;
    +---------+------+------+----------+--------+
    | R1      | R2   | R3   | R4       | R5     |
    |---------+------+------+----------+--------|
    | 12.34 % | 12 % | 13 % | 12.500 % | 12,50% |
    +---------+------+------+----------+--------+
    
    R またはr

    往復 。文字列に変換された数値が解析されて同じ数値に戻されるようにします。

    このフォーマット指定子を使用する場合、精度指定子は無視されます。

    :.NETでは、このフォーマット指定子はシングルでのみサポートされます 、ダブル 、および BigInteger 数の種類。また、ダブルの場合 値の場合、このフォーマット指定子は、元の値を正常にラウンドトリップできない場合があります。また、ダブルと併用すると、パフォーマンスが低下します。 およびシングル タイプ。

    さらに、.NETドキュメントでは、このフォーマット指定子を BigIntegerに使用することを推奨しています。 タイプのみ。 ダブルをお勧めします タイプはG17を使用します 、およびシングル タイプはG9を使用します 。

    これはSQLServerにとって何を意味しますか?基本的に、SQLServerではこの形式指定子を避ける必要があります。代わりに、G17を使用してください フロートの場合 データ型、およびG9 本物の場合 データ型。


    これは、Rを比較する例です。 G17を使用したフォーマット指定子 およびG9

    DECLARE @myFloat float, @myReal real;
    SET @myFloat = '123456789.1234567';
    SET @myReal = @myFloat;
    SELECT 
      @myFloat 'Float Value', 
      @myReal 'Real Value';
    SELECT 
      FORMAT(@myFloat, 'R') 'Float R',
      FORMAT(@myFloat, 'G17') 'Float G17',
      FORMAT(@myReal, 'R') 'Real R',
      FORMAT(@myReal, 'G9') 'Real G9';
    +------------------+--------------+
    | Float Value      | Real Value   |
    |------------------+--------------|
    | 123456789.123457 | 1.234568E+08 |
    +------------------+--------------+
    (1 row affected)
    +-------------------+-------------------+-----------+-----------+
    | Float R           | Float G17         | Real R    | Real G9   |
    |-------------------+-------------------+-----------+-----------|
    | 123456789.1234567 | 123456789.1234567 | 123456792 | 123456792 |
    +-------------------+-------------------+-----------+-----------+
    (1 row affected)
    
    X またはx

    16進数 。数値を16進数の文字列に変換します。

    使用されたケース(つまり、X またはx )9より大きい16進数に大文字と小文字のどちらを使用するかを指定します。これは、16進値が次の文字で構成されている可能性があるためです。 0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、およびf(いずれの場合も)。 16進数を使用する場合、大文字と小文字は同じ値を表します(例:f およびF 両方とも15に変換します 10進数で)。

    このフォーマット指定子は、整数型でのみサポートされています。

    (オプションの)精度指定子を使用する場合は、結果の合計桁数を指定します。数字の桁数がそれほど多くない場合は、左側にゼロが埋め込まれます。

    SELECT 
      FORMAT(123, 'X') R1,
      FORMAT(123, 'x') R2,
      FORMAT(123, 'x6') R3,
      FORMAT(12345678, 'x') R4,
      FORMAT(123, 'x6') R5,
      FORMAT(-123, 'x') R6,
      FORMAT(1.23, 'X') R7;
    +------+------+--------+--------+--------+----------+------+
    | R1   | R2   | R3     | R4     | R5     | R6       | R7   |
    |------+------+--------+--------+--------+----------+------|
    | 7B   | 7b   | 00007b | bc614e | 00007b | ffffff85 | NULL |
    +------+------+--------+--------+--------+----------+------+
    

    上記のリストは、執筆時点でMicrosoft Webサイトにある標準数値形式文字列の公式.NETドキュメントからの情報に基づいた、有効な.NETカスタム数値形式文字列の完全なリストです。

    これらがSQLServerのFORMAT()に関連する理由 関数は、この関数が有効な.NETFramework形式の文字列のみを受け入れることです。

    上記の標準に加えて 文字列をフォーマットする場合は、 customを使用することもできます 文字列をフォーマットします。 SQLServerで使用できるカスタム数値形式文字列の完全なリストは次のとおりです。

    日付と時刻の値をフォーマットすることもできます。 FORMAT()で使用できる標準の日付と時刻の形式の文字列、およびカスタムの日付と時刻の形式の文字列のリストを参照してください。 機能。

    それでもフォーマット文字列が何であるかを理解しようとしている場合は、SQLServerのフォーマット文字列とはを参照してください。フォーマット文字列の基本的な理解と、フォーマット文字列がFORMAT()にどのように関係するかについて説明します。 働き。


    1. SQLServer2005にクラスター化インデックスがない理由

    2. エラーの取得-ORA-01858:数字が予期されていた場所に数字以外の文字が見つかりました

    3. MySQLでテーブルをコピーする方法

    4. PostgreSQLユーザーに空白のパスワードを設定する