主要なRDBMSのほとんどには、グループ区切り文字または小数点記号としてカンマを使用して数値をフォーマットできる関数があります。
一部のRDBMSは、関連する場所にコンマを含む特定の数値データ型も出力します。
以下は、いくつかの一般的なDBMSでの数値のカンマによるフォーマットの例です。
MySQL
MySQLでは、FORMAT()
を使用できます 数値をコンマでフォーマットする関数:
SELECT FORMAT(123456.789, 2);
結果:
123,456.79
カンマをどこに置くかを指定する必要はありません。関数はそれらをどこに置くかを知っています。
この関数は、ロケールを指定するための3番目の引数も受け入れます。すべてのロケールがグループ区切り文字としてコンマを使用するわけではありません。一部のロケールでは、小数点記号としてコンマが使用されます。 FORMAT()
関数は、使用する規則を知るのに十分賢いです。
例:
SELECT FORMAT(123456.789, 2, 'de_DE');
結果:
123.456,79
Oracle
Oracleでは、 TO_CHAR()
を使用できます。 数値をコンマでフォーマットする関数:
SELECT TO_CHAR(12345, 'fm99G999D00')
FROM DUAL;
結果:
12,345.00
G
format要素は、グループセパレータとD
のプレースホルダーです。 小数点記号用です。
この場合、グループ区切り文字はコンマを出力し、10進文字はピリオドを出力します。これは、現在のセッションのNLS_TERRITORY
パラメータがAustralia
に設定されている 。
G
の代わりにハードコードされたカンマを使用できるのは事実です format要素ですが、グループ区切り文字がコンマであることを前提としています。すべてのロケールがグループ区切り文字としてコンマを使用するわけではありません。
Oracleで数値をカンマでフォーマットする方法の詳細と例については、Oracleでカンマを使用して数値をフォーマットする方法を参照してください。
SQL Server
SQL Serverでは、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 | +------------+----------------+-------------+>
この関数は、フォーマットされた出力に使用するロケールを指定するためのオプションの「カルチャ」引数も受け入れます。
独自のカスタム形式の文字列を作成して、千単位の区切り文字と小数点記号がどこにあるかを正確に判断することもできます。
例については、SQLServerでカンマを使用して数値をフォーマットする方法を参照してください。
PostgreSQL
PostgreSQLにはTO_CHAR()
があります 同じ名前のOracleの関数のように機能する関数:
SELECT TO_CHAR(123456.78, 'fm999G999D99');
結果:
123,456.78
この関数はロケールを認識しているため、ロケールに適したグループと小数点が表示されます。
PostgreSQLにはmoney
もあります ロケール対応形式で出力されるデータ型。例については、PostgreSQLのカンマを使用した数値のフォーマットを参照してください。
SQLite
SQLiteは、他のほとんどのDBMSと比較すると少し制限があります。ただし、printf()
はあります フォーマット文字列に従って数値をフォーマットできる関数:
SELECT printf("%,d", 123456789);
結果:
123,456,789
これは整数でも問題なく機能しますが、実数/浮動小数点数にはもう少し作業が必要です。詳細については、SQLiteのコンマを使用した数値のフォーマットを参照してください。
更新 :SQLite 3.38.0(2022年2月22日リリース)はprintf()
に名前を変更しました format()
への関数 。元のprintf()
名前は、下位互換性のためにエイリアスとして保持されます。
したがって、上記の例は次のように変更できます。
SELECT format("%,d", 123456789);
結果:
123,456,789
MariaDB
MariaDBでは、FORMAT()
を使用できます 数値をコンマでフォーマットする関数:
SELECT FORMAT(123456.789, 2);
結果:
123,456.79
同じ名前のMySQL関数と同様に、カンマをどこに置くかを指定する必要はありません。関数はそれらをどこに置くかを知っています。