一部のDBMSには、適切なフォーマット文字列を渡すだけで数値を通貨としてフォーマットできる関数があります。これにより、数値が、該当する通貨記号、グループ区切り文字、および小数点(該当する場合)を含む文字列に変換されます。
他のDBMSではそれほど簡単ではないため、最初に少し作業を行う必要があります。
以下は、SQLを使用して、最も一般的なDBMSのいくつかで数値を通貨としてフォーマットする例です。
Oracle
Oracle Databaseは、TO_CHAR(number)
を提供します。 関数。フォーマットモデル(またはフォーマット文字列)を渡すことで数値をフォーマットできます。この関数を使用して、数値を通貨として返すことができます。
Oracleは、必要な通貨記号に応じて、通貨記号を返すためのいくつかのフォーマット要素(現地通貨記号、ISO通貨記号、または二重通貨記号)を提供しています。
3つすべての例を次に示します。
ALTER SESSION SET NLS_TERRITORY = 'Denmark';
SELECT
TO_CHAR(12345, 'fmL99G999D00') AS "r1",
TO_CHAR(12345, 'fmC99G999D00') AS "r3",
TO_CHAR(12345, 'fmU99G999D00') AS "r3"
FROM DUAL;
結果:
r1 r3 r3 ______________ _______________ _____________ kr12.345,00 DKK12.345,00 €12.345,00
詳細と例については、Oracleで数値を通貨としてフォーマットする方法を参照してください。
SQL Server
SQL Serverには、数値と日付をフォーマットできるFORMAT()関数が用意されています。 C
フォーマット指定子を使用して、数値を通貨として返すことができます:
SELECT FORMAT(1234, 'C');
結果:
$1,234.00
返す小数点以下の桁数を指定するなど、フォーマット文字列を使用して実行できることは他にもあります。
この関数は、オプションの3番目の引数も受け入れます。これを使用して、数値と通貨のフォーマットに使用するロケールを指定できます。ロケールが異なれば、番号と通貨に異なる規則が使用されます。
詳細と例については、SQL Server(T-SQL)で数値を通貨としてフォーマットする方法を参照してください。
PostgreSQL
PostgreSQLにはmoney
があります 出力時に通常は現地通貨でフォーマットされるデータ型:
SELECT CAST(3145 as money);
結果:
$3,145.00
PostgreSQLにはTO_CHAR()
もあります 値を文字列に変換し、指定したフォーマット文字列に基づいてフォーマットする関数。したがって、適切なフォーマット文字列を渡すことで、数値を通貨としてフォーマットするために使用できます。
詳細については、PostgreSQLで数値を通貨としてフォーマットする方法を参照してください。
MySQL
MySQLでは、もう少し作業を行う必要があります。 MySQLは通貨記号の形式指定子を提供していないため、独自の形式指定子を提供する必要があります。
SELECT CONCAT('$', FORMAT(1234.5678, 2));
結果:
$1,234.57
ここでは、CONCAT()
を使用しました 通貨記号と数値を連結する関数であり、FORMAT()
を使用しました 数値を目的の形式にフォーマットする関数。
数値フォーマットのロケールを指定することができます。これにより、グループ区切り文字と小数点に使用される文字が決まります。
詳細については、MySQLで数値を通貨としてフォーマットする方法を参照してください。
MariaDB
MariaDBはMySQLに非常によく似ており、MySQLで使用したのと同じ方法を使用できます。
数値の書式設定に使用するロケールを指定する例を次に示します。
SELECT CONCAT('€', FORMAT(8790.2398, 2, 'de_DE'));
結果:
€8.790,24
この場合、ユーロ記号(€
)を指定しました )そして、ドイツで使用されている番号付け規則を使用するように番号をフォーマットしました。
詳細については、MariaDBで数値を通貨としてフォーマットするを参照してください。
SQLite
SQLiteにはPRINTF()
があります フォーマット文字列に基づいて数値をフォーマットできるようにする関数。たとえば、これを使用して、数値を指定された小数点以下の桁数にフォーマットし、さらに通貨記号を追加できます。
SELECT PRINTF("$%.2f", 123.457);
結果:
$123.46
更新 :SQLite 3.38.0(2022年2月22日リリース)はPRINTF()
に名前を変更しました FORMAT()
への関数 。元のPRINTF()
名前は、下位互換性のためにエイリアスとして保持されます。
したがって、上記の例は次のように変更できます。
SELECT FORMAT("$%.2f", 123.457);
結果:
$123.46
FORMAT()
の詳細については、SQLiteのドキュメントを参照してください。 機能。