Oracle Database fornisce il TO_CHAR(number)
funzione che consente di formattare i numeri in base a un determinato modello di formato. Ci sono tre elementi di formato che puoi usare con TO_CHAR()
funzione per restituire un valore come valuta.
Elementi del formato valuta
Gli elementi del formato valuta sono L
, C
e U
.
C | Restituisce il simbolo della valuta ISO (il valore corrente di NLS_ISO_CURRENCY parametro). |
L | Restituisce il simbolo della valuta locale (il valore corrente di NLS_CURRENCY parametro). |
U | Restituisce il simbolo della doppia valuta Euro (o altro), determinato dal valore corrente del NLS_DUAL_CURRENCY parametro. |
Questi modelli di formato ti consentono di emettere il simbolo di valuta in base alle impostazioni della tua valuta/regione, invece di dover fornire un simbolo di valuta fisso.
Anche se è vero che puoi fornire una stringa letterale per la valuta (ad esempio, un simbolo del dollaro ($
) per dollari), questo presuppone che la valuta sia denominata in quel valore hardcoded. Esistono molte altre valute possibili in tutto il mondo e gli elementi del formato sono in grado di restituire dinamicamente il simbolo della valuta locale per la sessione dell'utente.
Esempio
Ecco un esempio da dimostrare:
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;
Risultato:
r1 r3 r3 _____________ _______________ _____________ $12,345.00 AUD12,345.00 $12,345.00
L'unica differenza tra queste tre colonne è l'elemento del formato valuta. Il primo usa L
, il secondo usa C
e il terzo usa U
.
Tutti usano il fm
modificatore di formato per eliminare qualsiasi riempimento. Usano anche il 9
e 0
formattare gli elementi per produrre i numeri (il 0
l'elemento include zeri iniziali/finali). Includono anche un separatore di gruppo (rappresentato da G
), un carattere decimale (rappresentato da D
).
Doppia valuta
Nell'esempio sopra, ho impostato il NLS_TERRITORY
in Australia
. Ciò ha comportato la restituzione dello stesso simbolo di valuta in due delle tre colonne (ovvero il r1
e r3
colonne).
Nell'esempio seguente, utilizzo un territorio diverso:
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;
Risultato:
r1 r3 r3 ______________ _______________ _____________ kr12.345,00 DKK12.345,00 €12.345,00
Questa volta otteniamo un simbolo di valuta diverso per ciascuno dei r1
e r3
colonne.
Vedere Come controllare i valori dei parametri NLS se è necessario verificarli.
Il 'nlsparam'
Argomento
Quando si utilizza TO_CHAR()
funzione, il 'nlsparam'
argomento può essere utilizzato per specificare il carattere decimale e il separatore di gruppo, il simbolo della valuta locale e il simbolo della valuta internazionale.
Ha la forma seguente:
'NLS_NUMERIC_CHARACTERS = ''dg''
NLS_CURRENCY = ''text''
NLS_ISO_CURRENCY = territory '
Esempio:
SELECT
TO_CHAR(
1234.56,
'fmL99G999D99',
'NLS_NUMERIC_CHARACTERS = '',.''
NLS_CURRENCY = ''€''
NLS_ISO_CURRENCY = Germany'
)
FROM DUAL;
Risultato:
€1.234,56
Eccolo di nuovo, ma questa volta sostituisco L
con C
nel modello di formato:
SELECT
TO_CHAR(
1234.56,
'fmC99G999D99',
'NLS_NUMERIC_CHARACTERS = '',.''
NLS_CURRENCY = ''€''
NLS_ISO_CURRENCY = Germany'
)
FROM DUAL;
Risultato:
EUR1.234,56
Il C
restituisce il simbolo della valuta ISO, che in questo caso è EUR
.
Consulta questo elenco completo di elementi di formato numerico in Oracle per un elenco di elementi di formato che possono essere utilizzati per formattare i numeri con TO_CHAR()
funzione.