sql >> Databáze >  >> RDS >> Oracle

Jak naformátovat číslo jako měnu v Oracle

Oracle Database poskytuje TO_CHAR(number) funkce, která vám umožňuje formátovat čísla na základě daného modelu formátu. Existují tři prvky formátu, které můžete použít s TO_CHAR() za účelem vrácení hodnoty jako měny.

Prvky formátu měny

Prvky formátu měny jsou L , C a U .

C Vrátí symbol měny ISO (aktuální hodnotu NLS_ISO_CURRENCY parametr).
L Vrátí symbol místní měny (aktuální hodnotu NLS_CURRENCY parametr).
U Vrátí euro (nebo jiný) symbol duální měny určený aktuální hodnotou NLS_DUAL_CURRENCY parametr.

Tyto modely formátu vám umožňují vydávat znak měny na základě nastavení vaší měny/oblasti, místo abyste museli zadávat pevný symbol měny.

I když je pravda, že pro měnu můžete zadat řetězcový literál (například znak dolaru ($ ) pro dolary), předpokládá se, že měna je denominována v této pevně zakódované hodnotě. Na světě existuje mnoho dalších možných měn a prvky formátu jsou schopny dynamicky vracet symbol místní měny pro relaci uživatele.

Příklad

Zde je příklad k demonstraci:

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;

Výsledek:

           r1              r3            r3 
_____________ _______________ _____________ 
$12,345.00    AUD12,345.00    $12,345.00   

Jediný rozdíl mezi těmito třemi sloupci je prvek formátu měny. První používá L , druhý používá C a třetí používá U .

Všechny používají fm modifikátor formátu pro potlačení jakékoli výplně. Také používají 9 a 0 formátovací prvky pro výstup čísel (0 prvek obsahuje úvodní/koncové nuly). Zahrnují také oddělovač skupin (reprezentovaný G ), desetinný znak (reprezentovaný D ).

Duální měny

Ve výše uvedeném příkladu jsem nastavil NLS_TERRITORY do Australia . To vedlo k vrácení stejného symbolu měny ve dvou ze tří sloupců (tj. r1 a r3 sloupce).

V následujícím příkladu používám jiné území:

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;

Výsledek:

            r1              r3            r3 
______________ _______________ _____________ 
kr12.345,00    DKK12.345,00    €12.345,00   

Tentokrát dostaneme jiný symbol měny pro každý z r1 a r3 sloupce.

Pokud je potřebujete zkontrolovat, viz Jak zkontrolovat hodnoty parametrů NLS.

'nlsparam' Argument

Při použití TO_CHAR() funkce 'nlsparam' argument lze použít k určení desetinného znaku a oddělovače skupiny, symbolu místní měny a mezinárodního symbolu měny.

Má následující podobu:

'NLS_NUMERIC_CHARACTERS = ''dg''
   NLS_CURRENCY = ''text''
   NLS_ISO_CURRENCY = territory '

Příklad:

SELECT 
    TO_CHAR(
        1234.56, 
        'fmL99G999D99',
        'NLS_NUMERIC_CHARACTERS = '',.''
        NLS_CURRENCY = ''€''
        NLS_ISO_CURRENCY = Germany'
    )
FROM DUAL;

Výsledek:

€1.234,56

Je to tu znovu, ale tentokrát nahrazuji L s C ve formátu modelu:

SELECT 
    TO_CHAR(
        1234.56, 
        'fmC99G999D99',
        'NLS_NUMERIC_CHARACTERS = '',.''
        NLS_CURRENCY = ''€''
        NLS_ISO_CURRENCY = Germany'
    )
FROM DUAL;

Výsledek:

€1.234,56

C vrátí symbol měny ISO, což je v tomto případě EUR .

Seznam prvků formátu, které lze použít k formátování čísel pomocí TO_CHAR(), naleznete v tomto Úplném seznamu prvků formátu čísel v Oracle. funkce.


  1. Naformátujte číslo jako měnu v MariaDB

  2. Konstruktor SQLiteOpenHelper() není definován

  3. jak vytvořit uloženou proceduru v oracle, která přijímá pole parametrů

  4. Jak UPPER() funguje v MariaDB