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()
この機能を使用すると、日付と時刻をフォーマットすることもできます。
日付と時刻には、個別のフォーマット指定子のセットがあります:
- 標準の日付と時刻の形式の文字列
- カスタムの日付と時刻の形式の文字列