ほとんどの主要なRDBMSは、SQLを使用して数値をフォーマットする方法を提供します。基本的なフォーマット機能のみを提供するものもあれば、より高度なものもあります。
以下は、いくつかのより一般的なRDBMSで数値をフォーマットする例です。
MySQL
MySQLでは、FORMAT()
を使用できます 数値を特定の形式にフォーマットする関数。この関数は3つのパラメーターを受け入れます。数値、小数点以下の桁数、およびオプションのロケール:
SELECT FORMAT(123456.789, 2);
結果:
123,456.79
前述のように、3番目の引数を渡して、フォーマットパターンに使用するロケールを指定することもできます。例については、MySQLで数値をフォーマットする方法を参照してください。
数値を通貨としてフォーマットするには、MySQLで数値を通貨としてフォーマットする方法を参照してください。
Oracle
Oracle Databaseには、数値のフォーマットに関して多くのオプションが用意されています。
特に、TO_CHAR(number)
関数を使用すると、独自のカスタムフォーマットモデルに基づいて数値をフォーマットできます。
例:
SELECT
TO_CHAR(12345, 'fmL99G999D00')
FROM DUAL;
結果:
$12,345.00
最初の引数はフォーマットする数値であり、2番目の引数はフォーマットモデルです。フォーマットモデルは1つ以上のフォーマット要素で構成され、各要素はフォーマットされた出力の異なる要素を表します。
上記の例では、9
を使用しています。 各桁を表す文字、および0
数字またはゼロを出力する文字(数字がその位置に存在するかどうかによって異なります)。 G
も使用します ロケール対応のグループセパレータとD
の場合 ロケール対応の小数点記号の場合。 fm
elementは、結果に適用される可能性のある先頭または末尾のパディングを抑制します。
Oracleで数値をフォーマットする方法は他にもあります。たとえば、 LPAD()
関数を使用して、数値を文字列に変換し、その場で好きなようにフォーマットすることができます。 CAST()
のような関数 キャストされるデータ型によっては、数値のフォーマット方法にも影響を与える可能性があります。
詳細および例については、Oracleで数値をフォーマットする方法を参照してください。
PostgreSQL
Oracleと同様に、PostgreSQLにもTO_CHAR()
があります。 機能し、ほぼ同じように機能します:
SELECT TO_CHAR(923, 'fm000G000th');
結果:
000,923rd
ここでは、0
を使用しました 元の数値にその場所に数字がない場合でも、先行ゼロを出力するように要素をフォーマットします。この場合、th
を使用しました 数値を序数に変換するためのformat要素。 G
も使用しました ロケール対応のグループセパレーターの場合。
数値をフォーマットするときにフォーマット文字列で構成できるテンプレートパターンと、フォーマット修飾子のリストを次に示します。
PostgreSQLで数値をフォーマットする別の方法は、それをmoney
に変換することです。 データ・タイプ。 money
として保存されている番号 タイプは、適切な通貨記号、グループ区切り文字、小数点記号などを使用して、ロケールに対応した形式で出力されます。
SELECT CAST(10000 as money);
結果:
$10,000.00
PostgreSQLで数値をフォーマットするその他の例については、PostgreSQLで数値をフォーマットする方法を参照してください。
SQL Server
SQLServerにはFORMAT()
があります 関数。これは、OracleおよびPostgreSQLのTO_CHAR()
とよく似ています。 関数。フォーマット文字列に基づいて数値をフォーマットできます。
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つの標準フォーマット指定子を示しています。それぞれが特定のフォーマットで数値を出力します。
独自のカスタムフォーマット指定子を使用することもできます。これにより、標準フォーマットが希望どおりでない場合に備えて、独自のフォーマットを作成できます。
また、16進数に相当する数値をフォーマットしたり、指数表記を使用したりすることもできます。
また、オプションの3番目の引数を渡して、数値をフォーマットするロケールを指定できます(そのロケールの規則を使用して数値をフォーマットします)。
その他の例については、SQLServerで数値をフォーマットする方法を参照してください。
MariaDB
MySQLと同様に、MariaDBには FORMAT()
があります 基本的な数値フォーマットを提供する関数。
この関数を使用して、さまざまなロケールを使用して数値をフォーマットする例を次に示します。
SELECT
FORMAT(123456.789, 2, 'ta_IN') AS "Tamil, India",
FORMAT(123456.789, 2, 'de_DE') AS "German, Germany",
FORMAT(123456.789, 2, 'zh_HK') AS "Chinese, Hong Kong";
結果:
+--------------+-----------------+--------------------+ | Tamil, India | German, Germany | Chinese, Hong Kong | +--------------+-----------------+--------------------+ | 1,23,456.79 | 123.456,79 | 123,456.79 | +--------------+-----------------+--------------------+
その他の例については、MariaDBで数値をフォーマットする方法を参照してください。
SQLite
数値のフォーマットに関しては、SQLiteは他のDBMSよりも制限されています。ただし、いくつかの基本的な数値フォーマットを取得する方法があります:
SELECT PRINTF("%,d", 123456789);
結果:
123,456,789
PRINTF()
関数は整数のグループ区切り文字を出力できますが、実数/浮動小数点数の場合は出力できません。実数/浮動小数点数をフォーマットするには、もう少し作業を行う必要があります。私が言っていることの例については、SQLiteのコンマで数値をフォーマットするを参照してください。
更新 :SQLite 3.38.0(2022年2月22日リリース)はPRINTF()
に名前を変更しました FORMAT()
への関数 。元のPRINTF()
名前は、下位互換性のためにエイリアスとして保持されます。
したがって、上記の例は次のように変更できます。
SELECT FORMAT("%,d", 123456789);
結果:
123,456,789