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の数値フォーマット要素の完全なリストを参照してください。 機能。