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

SQLServerでコンマを使用して数値をフォーマットする方法

    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 |
    +----------------+----------------+

    1. Entity Frameworkは複数のテーブル名を作成しますが、ビューは単一のテーブル名を想定していますか?

    2. 可用性グループ接続の構成

    3. SQLコマンド

    4. Hiveクエリ言語の主キーとインデックスは可能かどうか?