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.