Oracle Database leverer TO_CHAR(number) funktion, der giver dig mulighed for at formatere tal baseret på en given formatmodel. Der er tre formatelementer, som du kan bruge med TO_CHAR() funktion for at returnere en værdi som en valuta.
Valutaformatelementer
Valutaformatelementerne er L , C og U .
C | Returnerer ISO-valutasymbolet (den aktuelle værdi af NLS_ISO_CURRENCY parameter). |
L | Returnerer det lokale valutasymbol (den aktuelle værdi af NLS_CURRENCY parameter). |
U | Returnerer euro-symbolet (eller et andet) dobbeltvalutasymbol, bestemt af den aktuelle værdi af NLS_DUAL_CURRENCY parameter. |
Disse formatmodeller giver dig mulighed for at udskrive valutategnet baseret på dine valuta-/regionsindstillinger i stedet for at skulle angive et fast valutasymbol.
Selvom det er rigtigt, at du kan angive en streng bogstavelig for valutaen (f.eks. et dollartegn ($ ) for dollars), forudsætter dette, at valutaen er denomineret i den hårdkodede værdi. Der er mange andre mulige valutaer rundt om i verden, og formatelementerne er i stand til dynamisk at returnere det lokale valutasymbol for brugerens session.
Eksempel
Her er et eksempel til demonstration:
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; Resultat:
r1 r3 r3 _____________ _______________ _____________ $12,345.00 AUD12,345.00 $12,345.00
Den eneste forskel mellem disse tre kolonner er valutaformatelementet. Den første bruger L , den anden bruger C , og den tredje bruger U .
De bruger alle fm formatmodifikator for at undertrykke enhver polstring. De bruger også 9 og 0 formater elementer for at udskrive tallene (0 element inkluderer foran/efter nuller). De inkluderer også en gruppeseparator (repræsenteret ved G). ), et decimaltegn (repræsenteret ved D ).
Dobbelt valuta
I ovenstående eksempel indstillede jeg NLS_TERRITORY til Australia . Dette resulterede i, at det samme valutasymbol blev returneret i to af de tre kolonner (dvs. r1 og r3 kolonner).
I det følgende eksempel bruger jeg et andet område:
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; Resultat:
r1 r3 r3 ______________ _______________ _____________ kr12.345,00 DKK12.345,00 €12.345,00
Denne gang får vi et andet valutasymbol for hver af r1 og r3 kolonner.
Se, hvordan du kontrollerer værdierne af NLS-parametrene, hvis du har brug for at kontrollere dem.
'nlsparam' Argument
Når du bruger TO_CHAR() funktion, 'nlsparam' argument kan bruges til at angive decimaltegn og gruppeseparator, det lokale valutasymbol og det internationale valutasymbol.
Det har følgende form:
'NLS_NUMERIC_CHARACTERS = ''dg''
NLS_CURRENCY = ''text''
NLS_ISO_CURRENCY = territory ' Eksempel:
SELECT
TO_CHAR(
1234.56,
'fmL99G999D99',
'NLS_NUMERIC_CHARACTERS = '',.''
NLS_CURRENCY = ''€''
NLS_ISO_CURRENCY = Germany'
)
FROM DUAL; Resultat:
€1.234,56
Her er den igen, men denne gang erstatter jeg L med C i formatmodellen:
SELECT
TO_CHAR(
1234.56,
'fmC99G999D99',
'NLS_NUMERIC_CHARACTERS = '',.''
NLS_CURRENCY = ''€''
NLS_ISO_CURRENCY = Germany'
)
FROM DUAL; Resultat:
EUR1.234,56
C returnerer ISO-valutasymbolet, som i dette tilfælde er EUR .
Se denne fulde liste over talformatelementer i Oracle for en liste over formatelementer, der kan bruges til at formatere tal med TO_CHAR() funktion.