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.