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.