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

SQL ServerのFORMAT()でサポートされているカスタム数値形式文字列

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

    フォーマット文字列
    説明/例
    0

    ゼロプレースホルダー 。ゼロが存在する場合は、ゼロを対応する数字に置き換えます。それ以外の場合は、結果文字列にゼロが表示されます。

    SELECT 
      FORMAT(12.34, '0') R1,
      FORMAT(012.34, '00') R2,
      FORMAT(12.34, '000') R3,
      FORMAT(012.34, '0000') R4,
      FORMAT(12.54, '00') R5;
    +------+------+------+------+------+
    | R1   | R2   | R3   | R4   | R5   |
    |------+------+------+------+------|
    | 12   | 12   | 012  | 0012 | 13   |
    +------+------+------+------+------+
    

    数字のプレースホルダー 。 「#」記号が存在する場合は、対応する数字に置き換えます。それ以外の場合、結果の文字列に数字は表示されません。

    入力文字列の対応する数字が重要でない0の場合、結果文字列に数字は表示されません。

    SELECT 
      FORMAT(12.34, '#') R1,
      FORMAT(012.34, '##') R2,
      FORMAT(12.34, '###') R3,
      FORMAT(012.34, '####') R4,
      FORMAT(12.54, '##') R5;
    +------+------+------+------+------+
    | R1   | R2   | R3   | R4   | R5   |
    |------+------+------+------+------|
    | 12   | 12   | 12   | 12   | 13   |
    +------+------+------+------+------+
    

    小数点 。結果文字列内の小数点の位置を決定します。

    SELECT 
      FORMAT(12.34, '0.0', 'en-US') R1,
      FORMAT(12.34, '.00', 'en-US') R2,
      FORMAT(12.34, '.', 'en-US') R3,
      FORMAT(12.34, '.00', 'fr-FR') R4;
    +------+-------+------+-------+
    | R1   | R2    | R3   | R4    |
    |------+-------+------+-------|
    | 12.3 | 12.34 | 12   | 12,34 |
    +------+-------+------+-------+
    

    グループの区切り文字と数値のスケーリング 。グループ区切り文字(千単位の区切り文字とも呼ばれます)と数値スケーリング指定子の両方として使用できます。

    • グループセパレーターとして 、各グループの間にローカライズされたグループ区切り文字を挿入します。
    • 数値スケーリング指定子として 、指定されたコンマごとに数値を1000で除算します。

    グループ区切り文字を指定するには、数値の整数桁をフォーマットする2桁のプレースホルダー(0または#)の間に1つ以上のコンマを置きます。これにより、出力の整数部分の各数値グループの間にグループ区切り文字が挿入されます。

    数値スケーリング指定子を指定するには、明示的または暗黙的な小数点のすぐ左に1つ以上のコンマを配置します。

    例–グループセパレーターとして

    SELECT 
      FORMAT(12345678, '#,#', 'en-US') 'US English',
      FORMAT(12345678, '#,#', 'fr-FR') 'French',
      FORMAT(12345678, '#,#', 'es-ES') 'Spanish';
    +--------------+------------+------------+
    | US English   | French     | Spanish    |
    |--------------+------------+------------|
    | 12,345,678   | 12 345 678 | 12.345.678 |
    +--------------+------------+------------+
    

    例–数値スケーリング指定子として

    SELECT 
      FORMAT(12000, '#,', 'en-US') 'R1',
      FORMAT(1234567890, '#,', 'en-US') R2,
      FORMAT(1234567890, '#,,', 'en-US') R3;
    +------+---------+------+
    | R1   | R2      | R3   |
    |------+---------+------|
    | 12   | 1234568 | 1235 |
    +------+---------+------+
    

    例–両方として

    SELECT 
      FORMAT(1234567890, '#,#,', 'en-US') R1,
      FORMAT(1234567890, '#,#,,', 'en-US') R2;
    +-----------+-------+
    | R1        | R2    |
    |-----------+-------|
    | 1,234,568 | 1,235 |
    +-----------+-------+
    

    パーセンテージプレースホルダー 。数値に100を掛けて、結果文字列にローカライズされたパーセント記号を挿入します。

    SELECT 
      FORMAT(0.1234, '#.# %', 'en-US') R1,
      FORMAT(0.1235, '#.#%', 'zh-cn') R2,
      FORMAT(0.125, '#. %', 'en-US') R3,
      FORMAT(0.1234, '%#.00,', 'tr') R4,
      FORMAT(0.1234, '#.#%', 'it') R5;
    +--------+-------+------+--------+-------+
    | R1     | R2    | R3   | R4     | R5    |
    |--------+-------+------+--------+-------|
    | 12.3 % | 12.4% | 13 % | %12,34 | 12,3% |
    +--------+-------+------+--------+-------+
    
    >

    パーミルプレースホルダー 。数値に1000を掛けて、結果の文字列にローカライズされたパーミル記号を挿入します。

    SELECT 
      FORMAT(0.01234, '#.# ‰', 'en-US') 'R1',
      FORMAT(0.01235, '#.# ‰', 'en-US') R2,
      FORMAT(0.0125, '#. ‰', 'en-US') R3,
      FORMAT(0.01234, '#.# ‰', 'fr-FR') R4;
    +--------+--------+------+--------+
    | R1     | R2     | R3   | R4     |
    |--------+--------+------+--------|
    | 12.3 ‰ | 12.4 ‰ | 13 ‰ | 12,3 ‰ |
    +--------+--------+------+--------+
    

    E0
    E + 0
    E-0
    e0
    e + 0
    e-0

    指数表記 。少なくとも1つのゼロが続く場合( 0 )、指数表記を使用して結果をフォーマットします。ケース( E またはe )は、結果文字列の指数記号の大文字と小文字を示します。 Eに続くゼロの数 またはe 文字は、指数の最小桁数を決定します。プラス記号( + )は、符号文字が常に指数の前にあることを示します。マイナス記号(- )は、符号文字が負の指数のみに先行することを示します。

    SELECT 
      FORMAT(123456789, '0e0') R1,
      FORMAT(123456789, '0e+0') R2,
      FORMAT(123456789, '0E+00') R3,
      FORMAT(1234.56789, '0.0##e+00') R4,
      FORMAT(12.3456789-12, '0e-0') R5;
    +------+------+-------+-----------+------+
    | R1   | R2   | R3    | R4        | R5   |
    |------+------+-------+-----------+------|
    | 1e8  | 1e+8 | 1E+08 | 1.235e+03 | 3e-1 |
    +------+------+-------+-----------+------+
    

    \

    エスケープ文字 。次の文字をカスタム形式指定子ではなくリテラルとして解釈します。

    SELECT FORMAT(123, '\#0000') Result;
    +----------+
    | Result   |
    |----------|
    | #0123    |
    +----------+
    

    'string'
    "string"

    リテラル文字列区切り文字 。囲まれた文字を変更せずに結果文字列にコピーする必要があることを示します。

    SELECT FORMAT(23, '## Degrees') Result;
    +------------+
    | Result     |
    |------------|
    | 23 Degrees |
    +------------+
    

    ;

    セクションセパレータ 。これは、正、負、およびゼロの数値に対して個別のフォーマット文字列を持つセクションを定義する条件付きフォーマット指定子です。これにより、数値が正、負、またはゼロのいずれであるかに応じて、数値に異なるフォーマットを適用できます。カスタムフォーマットの文字列には、セミコロンで区切られた最大3つのセクションを含めることができます。

    • 1つのセクション :フォーマット文字列はすべての値に適用されます(前の例と同様)。
    • 2つのセクション :最初のセクションは正の値とゼロに適用され、2番目のセクションは負の値に適用されます。

      フォーマットする数値が負であるが、2番目のセクションのフォーマットに従って丸めた後にゼロになる場合、結果のゼロは最初のセクションに従ってフォーマットされます。

    • 3つのセクション :最初のセクションは正の値に適用され、2番目のセクションは負の値に適用され、3番目のセクションはゼロに適用されます。

      2番目のセクションは(セミコロンの間に何も入れないことで)空のままにすることができます。その場合、最初のセクションはすべての非ゼロ値に適用されます。

      フォーマットされる数値がゼロ以外であるが、最初または2番目のセクションのフォーマットに従って丸めた後にゼロになる場合、結果のゼロは3番目のセクションに従ってフォーマットされます。

    セクションセパレータを使用する場合、負の値は常にマイナス記号なしで表示されることに注意してください。最終的にフォーマットされた値にマイナス記号を付ける場合は、カスタムフォーマット文字列の一部としてマイナス記号を明示的に含める必要があります。これは、数値に関連付けられている他の既存の書式にも適用されます。

    例– 1つのセクション(セクション区切り文字なし)
    これは、1つのセクションで構成される一般的なフォーマット文字列です(前の例と同様)。したがって、分離セパレータは使用されません。

    SELECT 
      FORMAT(123, '0 (Number)') Positive,
      FORMAT(-123, '0 (Number)') Negative,
      FORMAT(0, '0 (Number)') Zero;
    +--------------+---------------+------------+
    | Positive     | Negative      | Zero       |
    |--------------+---------------+------------|
    | 123 (Number) | -123 (Number) | 0 (Number) |
    +--------------+---------------+------------+
    

    セクションセパレータを使用しなかったため、マイナス記号はそのまま残ります。

    例–2つのセクション

    /* EXAMPLE 1 - Same format string, different values */
    SELECT 
      FORMAT(123,  '0 (Positive or Zero); 0 (Negative)') Positive,
      FORMAT(-123, '0 (Positive or Zero); 0 (Negative)') Negative,
      FORMAT(0,    '0 (Positive or Zero); 0 (Negative)') Zero;
    +------------------------+-----------------+----------------------+
    | Positive               | Negative        | Zero                 |
    |------------------------+-----------------+----------------------|
    | 123 (Positive or Zero) |  123 (Negative) | 0 (Positive or Zero) |
    +------------------------+-----------------+----------------------+
    
    /* EXAMPLE 2 - Rounding. 
    Negative values rounded to zero get 
    formatted under the first format string. 
    */
    SELECT 
      FORMAT(0.1,  '0 (Positive or Zero); 0 (Negative)') Positive,
      FORMAT(-0.1, '0 (Positive or Zero); 0 (Negative)') Negative;
    +----------------------+----------------------+
    | Positive             | Negative             |
    |----------------------+----------------------|
    | 0 (Positive or Zero) | 0 (Positive or Zero) |
    +----------------------+----------------------+
    

    例–3つのセクション

    /* EXAMPLE 1 - Basic Usage */
    SELECT FORMAT(123, '0 (Positive); 0 (Negative); 0 (Zero)') Result;
    +----------------+
    | Result         |
    |----------------|
    | 123 (Positive) |
    +----------------+
    
    /* EXAMPLE 2 - Same format string, different values */
    SELECT 
      FORMAT(123,   '0 (Positive); 0 (Negative); 0 (Zero)') 'Positive',
      FORMAT(-123,  '0 (Positive); 0 (Negative); 0 (Zero)') 'Negative',
      FORMAT(0,     '0 (Positive); 0 (Negative); 0 (Zero)') 'Zero',
      FORMAT(0.123, '0 (Positive); 0 (Negative); 0 (Zero)') 'Rounded to Zero';
    
    +----------------+----------------+-----------+-------------------+
    | Positive       | Negative       | Zero      | Rounded to Zero   |
    |----------------+----------------+-----------+-------------------|
    | 123 (Positive) | 123 (Negative) |  0 (Zero) |  0 (Zero)         |
    +----------------+----------------+-----------+-------------------+
    
    /* EXAMPLE 3 - Second format string is empty */
    SELECT 
      FORMAT(123,   '0 (Positive);; 0 (Zero)') 'Positive',
      FORMAT(-123,  '0 (Positive);; 0 (Zero)') 'Negative',
      FORMAT(0,     '0 (Positive);; 0 (Zero)') 'Zero',
      FORMAT(0.123, '0 (Positive);; 0 (Zero)') 'Rounded to Zero';
    +----------------+-----------------+-----------+-------------------+
    | Positive       | Negative        | Zero      | Rounded to Zero   |
    |----------------+-----------------+-----------+-------------------|
    | 123 (Positive) | -123 (Positive) |  0 (Zero) |  0 (Zero)         |
    +----------------+-----------------+-----------+-------------------+
    
    その他

    他のすべてのキャラクター。 文字は変更されずに結果文字列にコピーされます。

    SELECT FORMAT(12, '# °C') Result;
    +----------+
    | Result   |
    |----------|
    | 12 °C    |
    +----------+
    

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

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

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

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

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


    1. MariaDBでのCOT()のしくみ

    2. PHPを使用して各登録ユーザーに独自のURLを与えるにはどうすればよいですか?

    3. なぜJOIN句とWHERE条件を使用するのですか?

    4. 結合を使用してPostgreSQLの異なるテーブルのデータを結合する