Oracle Database stellt den TO_CHAR(number)
bereit Funktion, mit der Sie Zahlen basierend auf einem bestimmten Formatmodell formatieren können. Es gibt drei Formatelemente, die Sie mit TO_CHAR()
verwenden können Funktion, um einen Wert als Währung zurückzugeben.
Währungsformatelemente
Die Währungsformatelemente sind L
, C
, und U
.
C | Gibt das ISO-Währungssymbol zurück (den aktuellen Wert von NLS_ISO_CURRENCY Parameter). |
L | Gibt das lokale Währungssymbol zurück (der aktuelle Wert von NLS_CURRENCY Parameter). |
U | Gibt das Doppelwährungssymbol Euro (oder ein anderes) zurück, bestimmt durch den aktuellen Wert von NLS_DUAL_CURRENCY Parameter. |
Mit diesen Formatmodellen können Sie das Währungszeichen basierend auf Ihren Währungs-/Regionseinstellungen ausgeben, anstatt ein festes Währungssymbol angeben zu müssen.
Es stimmt zwar, dass Sie ein Zeichenfolgenliteral für die Währung angeben können (z. B. ein Dollarzeichen ($
) für Dollar), setzt dies voraus, dass die Währung auf diesen hartcodierten Wert lautet. Es gibt viele andere mögliche Währungen auf der ganzen Welt, und die Formatelemente können das lokale Währungssymbol für die Sitzung des Benutzers dynamisch zurückgeben.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung:
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;
Ergebnis:
r1 r3 r3 _____________ _______________ _____________ $12,345.00 AUD12,345.00 $12,345.00
Der einzige Unterschied zwischen diesen drei Spalten ist das Währungsformatelement. Die erste verwendet L
, die zweite verwendet C
, und der dritte verwendet U
.
Sie alle verwenden den fm
Formatmodifikator, um jegliches Padding zu unterdrücken. Sie verwenden auch die 9
und 0
Formatelemente zur Ausgabe der Zahlen (die 0
Element enthält führende/nachgestellte Nullen). Sie enthalten auch ein Gruppentrennzeichen (dargestellt durch G
), ein Dezimalzeichen (dargestellt durch D
).
Zwei Währungen
Im obigen Beispiel habe ich den NLS_TERRITORY
gesetzt nach Australia
. Dies führte dazu, dass in zwei der drei Spalten dasselbe Währungssymbol zurückgegeben wurde (d. h. der r1
und r3
Spalten).
Im folgenden Beispiel verwende ich ein anderes Gebiet:
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;
Ergebnis:
r1 r3 r3 ______________ _______________ _____________ kr12.345,00 DKK12.345,00 €12.345,00
Dieses Mal erhalten wir für jeden der r1
ein anderes Währungssymbol und r3
Spalten.
Siehe So überprüfen Sie die Werte der NLS-Parameter, wenn Sie sie überprüfen müssen.
Der 'nlsparam'
Argument
Bei Verwendung von TO_CHAR()
Funktion, die 'nlsparam'
Argument kann verwendet werden, um das Dezimalzeichen und das Gruppentrennzeichen, das lokale Währungssymbol und das internationale Währungssymbol anzugeben.
Es hat folgende Form:
'NLS_NUMERIC_CHARACTERS = ''dg''
NLS_CURRENCY = ''text''
NLS_ISO_CURRENCY = territory '
Beispiel:
SELECT
TO_CHAR(
1234.56,
'fmL99G999D99',
'NLS_NUMERIC_CHARACTERS = '',.''
NLS_CURRENCY = ''€''
NLS_ISO_CURRENCY = Germany'
)
FROM DUAL;
Ergebnis:
€1.234,56
Hier ist es wieder, aber dieses Mal ersetze ich L
mit C
im Format model:
SELECT
TO_CHAR(
1234.56,
'fmC99G999D99',
'NLS_NUMERIC_CHARACTERS = '',.''
NLS_CURRENCY = ''€''
NLS_ISO_CURRENCY = Germany'
)
FROM DUAL;
Ergebnis:
EUR1.234,56
Das C
gibt das ISO-Währungssymbol zurück, in diesem Fall EUR
.
In dieser vollständigen Liste der Zahlenformatelemente in Oracle finden Sie eine Liste der Formatelemente, die zum Formatieren von Zahlen mit TO_CHAR()
verwendet werden können Funktion.