Oracle Databaseは、TO_CHAR(number)を提供します 特定のフォーマットモデルに基づいて数値をフォーマットできるようにする関数。 TO_CHAR()で使用できるフォーマット要素は3つあります。 値を通貨として返すための関数。
通貨フォーマット要素
通貨フォーマット要素はLです。 、C 、およびU 。
C | ISO通貨記号(NLS_ISO_CURRENCYの現在の値)を返します パラメータ)。 |
L | 現地通貨記号(NLS_CURRENCYの現在の値)を返します パラメータ)。 |
U | NLS_DUAL_CURRENCYの現在の値によって決定される、ユーロ(またはその他の)二重通貨記号を返します。 パラメータ。 |
これらのフォーマットモデルを使用すると、固定通貨記号を指定するのではなく、通貨/地域の設定に基づいて通貨記号を出力できます。
通貨の文字列リテラルを指定できるのは事実ですが(たとえば、ドル記号($) )ドルの場合)、これは、通貨がそのハードコードされた値で表示されることを前提としています。世界中には他にも多くの可能な通貨があり、フォーマット要素はユーザーのセッションの現地通貨記号を動的に返すことができます。
例
デモンストレーションの例を次に示します。
ALTER SESSION SET NLS_TERRITORY = 'Australia';
SELECT
TO_CHAR(12345, 'fmL99G999D00') AS "r1",
TO_CHAR(12345, 'fmC99G999D00') AS "r3",
TO_CHAR(12345, 'fmU99G999D00') AS "r3"
FROM DUAL; 結果:
r1 r3 r3 _____________ _______________ _____________ $12,345.00 AUD12,345.00 $12,345.00
これらの3つの列の唯一の違いは、通貨フォーマット要素です。最初はLを使用します 、2番目はCを使用します 、3番目はUを使用します 。
それらはすべてfmを使用します パディングを抑制するためのフォーマット修飾子。 9も使用します および0 数値を出力するためのフォーマット要素(0 要素には先頭/末尾のゼロが含まれます)。また、グループセパレーター(Gで表される)も含まれています )、10進文字(Dで表されます 。
二重通貨
上記の例では、NLS_TERRITORYを設定しました Australiaへ 。これにより、3つの列のうち2つに同じ通貨記号が返されました(つまり、r1 およびr3 列)。
次の例では、別のテリトリーを使用しています。
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
今回は、r1ごとに異なる通貨記号を取得します およびr3 列。
NLSパラメータの値を確認する必要がある場合は、それらの値を確認する方法を参照してください。
'nlsparam' 引数
TO_CHAR()を使用する場合 関数、 'nlsparam' 引数を使用して、10進文字とグループ区切り文字、現地通貨記号、および国際通貨記号を指定できます。
次の形式を取ります:
'NLS_NUMERIC_CHARACTERS = ''dg''
NLS_CURRENCY = ''text''
NLS_ISO_CURRENCY = territory ' 例:
SELECT
TO_CHAR(
1234.56,
'fmL99G999D99',
'NLS_NUMERIC_CHARACTERS = '',.''
NLS_CURRENCY = ''€''
NLS_ISO_CURRENCY = Germany'
)
FROM DUAL; 結果:
€1.234,56
これもまたですが、今回はLを置き換えます Cを使用 フォーマットモデル:
SELECT
TO_CHAR(
1234.56,
'fmC99G999D99',
'NLS_NUMERIC_CHARACTERS = '',.''
NLS_CURRENCY = ''€''
NLS_ISO_CURRENCY = Germany'
)
FROM DUAL; 結果:
EUR1.234,56
C ISO通貨記号を返します。この場合はEURです。 。
TO_CHAR()を使用して数値をフォーマットするために使用できるフォーマット要素のリストについては、Oracleの数値フォーマット要素の完全なリストを参照してください。 機能。