Baza danych Oracle udostępnia TO_CHAR(number)
funkcja umożliwiająca formatowanie liczb w oparciu o dany model formatu. Istnieją trzy elementy formatu, których możesz użyć z TO_CHAR()
funkcja, aby zwrócić wartość jako walutę.
Elementy formatu waluty
Elementy formatu waluty to L
, C
i U
.
C | Zwraca symbol waluty ISO (bieżącą wartość NLS_ISO_CURRENCY parametr). |
L | Zwraca symbol waluty lokalnej (bieżącą wartość NLS_CURRENCY parametr). |
U | Zwraca symbol podwójnej waluty euro (lub inny), określony przez bieżącą wartość NLS_DUAL_CURRENCY parametr. |
Te modele formatów umożliwiają wyświetlanie znaku waluty w oparciu o ustawienia waluty/regionu, bez konieczności podawania stałego symbolu waluty.
Chociaż prawdą jest, że możesz podać literał ciągu dla waluty (na przykład znak dolara ($
) dla dolarów), zakłada się, że waluta jest denominowana w tej zakodowanej wartości. Istnieje wiele innych możliwych walut na całym świecie, a elementy formatu są w stanie dynamicznie zwrócić symbol lokalnej waluty dla sesji użytkownika.
Przykład
Oto przykład do zademonstrowania:
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;
Wynik:
r1 r3 r3 _____________ _______________ _____________ $12,345.00 AUD12,345.00 $12,345.00
Jedyną różnicą między tymi trzema kolumnami jest element formatu waluty. Pierwszy używa L
, drugi używa C
, a trzeci używa U
.
Wszyscy używają fm
modyfikator formatu, aby pominąć wszelkie dopełnienie. Używają również 9
i 0
formatowanie elementów do wyprowadzania liczb (0
element zawiera wiodące/końcowe zera). Zawierają również separator grup (reprezentowany przez G
), znak dziesiętny (reprezentowany przez D
).
Dwa waluty
W powyższym przykładzie ustawiłem NLS_TERRITORY
do Australia
. Spowodowało to zwrócenie tego samego symbolu waluty w dwóch z trzech kolumn (tj. r1
i r3
kolumny).
W poniższym przykładzie używam innego terytorium:
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;
Wynik:
r1 r3 r3 ______________ _______________ _____________ kr12.345,00 DKK12.345,00 €12.345,00
Tym razem otrzymujemy inny symbol waluty dla każdego z r1
i r3
kolumny.
Zobacz Jak sprawdzić wartości parametrów NLS, jeśli chcesz je sprawdzić.
'nlsparam'
Argument
Używając TO_CHAR()
funkcja 'nlsparam'
argument może być użyty do określenia znaku dziesiętnego i separatora grupy, symbolu waluty lokalnej i symbolu waluty międzynarodowej.
Przybiera następującą formę:
'NLS_NUMERIC_CHARACTERS = ''dg''
NLS_CURRENCY = ''text''
NLS_ISO_CURRENCY = territory '
Przykład:
SELECT
TO_CHAR(
1234.56,
'fmL99G999D99',
'NLS_NUMERIC_CHARACTERS = '',.''
NLS_CURRENCY = ''€''
NLS_ISO_CURRENCY = Germany'
)
FROM DUAL;
Wynik:
€1.234,56
Tutaj jest znowu, ale tym razem zastępuję L
z C
w modelu formatu:
SELECT
TO_CHAR(
1234.56,
'fmC99G999D99',
'NLS_NUMERIC_CHARACTERS = '',.''
NLS_CURRENCY = ''€''
NLS_ISO_CURRENCY = Germany'
)
FROM DUAL;
Wynik:
EUR1.234,56
C
zwraca symbol waluty ISO, którym w tym przypadku jest EUR
.
Zobacz pełną listę elementów formatu liczb w Oracle, aby zapoznać się z listą elementów formatu, których można użyć do formatowania liczb za pomocą TO_CHAR()
funkcja.