Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So formatieren Sie eine Zahl als Währung in Oracle

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.