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.