Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak sformatować liczbę jako walutę w Oracle

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. System.Data.OracleClient wymaga oprogramowania klienckiego Oracle w wersji 8.1.7

  2. Usuwanie zduplikowanych wierszy z tabeli w Oracle

  3. SQL Dev 4.2 Top SQL

  4. ORA-27154 / ORA-27146

  5. Jak naprawić przestarzałe oracle.sql.ArrayDescriptor, oracle.sql.STRUCT i oracle.sql.StructDescriptor