SQL Serverは、関連する場所にコンマを挿入して数値をフォーマットするための迅速で簡単な方法を提供します。例: 1234.56 1,234.56になることができます 。または、 1.234,56になる可能性があります 、それが使用しているロケールの場合。
例
FORMAT()
を使用できます 数値をコンマでフォーマットする関数。この関数を使用するときは、数値とフォーマット文字列を渡します。フォーマット文字列は、返されるときに数値がどのようにフォーマットされるかを決定します。
FORMAT()
関数は、提供された値に基づいて、数値のフォーマットされた文字列表現を返します。
デモンストレーションの例を次に示します。
SELECT
FORMAT(123456.789, 'N') AS "Number",
FORMAT(123456.789, 'P') AS "Percent",
FORMAT(123456.789, 'C') AS "Currency";
結果:
+------------+----------------+-------------+ | Number | Percent | Currency | |------------+----------------+-------------| | 123,456.79 | 12,345,678.90% | $123,456.79 | +------------+----------------+-------------+>
この例は、3つの標準的な数値形式の文字列を示しています。
- フォーマットされた数値だけが必要な場合は、
N
を使用できます - パーセンテージでフォーマットする場合は、
P
を使用できます。 - 通貨については、
C
を使用できます 。
SQL Serverは、(現在のセッションの言語に基づいて)現在のロケールを認識し、そのロケールの規則に従って結果をフォーマットするのに十分な機能を備えています。これは重要です。なぜなら、千の区切り文字としてコンマを使用し、小数の
さらに、FORMAT()
関数は、3番目のオプションの「カルチャ」引数を受け入れます。これにより、ロケールを明示的に指定できます。
これが私の言いたいことの例です:
SELECT
FORMAT(123456.789, 'N', 'de-de') AS "Number",
FORMAT(123456.789, 'P', 'de-de') AS "Percent",
FORMAT(123456.789, 'C', 'de-de') AS "Currency";
結果:
+------------+-----------------+--------------+ | Number | Percent | Currency | |------------+-----------------+--------------| | 123.456,79 | 12.345.678,90 % | 123.456,79 € | +------------+-----------------+--------------+
この場合、de-de
を指定します 文化として、これは結果がドイツの慣習に従ってフォーマットされることを意味します。ピリオドがグループ区切り文字として使用され、カンマが10進数の
3番目の引数を省略すると、現在のセッションの言語が使用されます。
カスタムフォーマット文字列
カスタムフォーマット指定子を使用して、独自のカスタムフォーマット文字列を作成することもできます。たとえば、#
文字は数字のプレースホルダー、0
ゼロのプレースホルダー、コンマ(,
)はグループ区切り文字のプレースホルダーであり、ピリオド(.
)は、10進数の
これは、使用されているロケールに関係なく当てはまります。SQLServerは、現在のロケールに基づいて、グループと小数点に使用する文字を決定します。
例:
SELECT
FORMAT(123456.789, '###,###,###.##', 'en-us') AS "US English",
FORMAT(123456.789, '###,###,###.##', 'de-de') AS "German";
結果:
+--------------+------------+ | US English | German | |--------------+------------| | 123,456.79 | 123.456,79 | +--------------+------------+
どちらの場合も、同じ形式の文字列を使用しましたが、SQL Serverは、指定されたロケール(3番目の「カルチャ」引数で指定された)に適用できるグループと小数点を返しました。
上記の例では、フォーマット文字列に実際の数値よりも多くの桁が含まれています。とにかく、SQLServerは先行ゼロを返さないことを選択しました。 #
を使用したためです フォーマット指定子。
SQL Serverが先行ゼロを返すようにする場合は、0
を使用できます。 フォーマット指定子:
SELECT
FORMAT(123456.789, '000,000,000.00', 'en-us') AS "US English",
FORMAT(123456.789, '000,000,000.00', 'de-de') AS "German";
結果:
+----------------+----------------+ | US English | German | |----------------+----------------| | 000,123,456.79 | 000.123.456,79 | +----------------+----------------+