O Oracle Database fornece o
TO_CHAR(number) função que permite formatar números com base em um determinado modelo de formato. Existem três elementos de formato que você pode usar com o TO_CHAR() função para retornar um valor como moeda. Elementos de formato de moeda
Os elementos de formato de moeda são
L , C e U . C | Retorna o símbolo de moeda ISO (o valor atual do NLS_ISO_CURRENCY parâmetro). |
L | Retorna o símbolo da moeda local (o valor atual de NLS_CURRENCY parâmetro). |
U | Retorna o símbolo de moeda dupla do Euro (ou outro), determinado pelo valor atual do NLS_DUAL_CURRENCY parâmetro. |
Esses modelos de formato permitem que você exiba o símbolo de moeda com base nas configurações de moeda/região, em vez de fornecer um símbolo de moeda fixo.
Embora seja verdade que você pode fornecer um literal de string para a moeda (por exemplo, um cifrão (
$ ) para dólares), isso pressupõe que a moeda seja denominada nesse valor codificado permanentemente. Existem muitas outras moedas possíveis em todo o mundo, e os elementos de formato são capazes de retornar dinamicamente o símbolo da moeda local para a sessão do usuário. Exemplo
Segue um exemplo para demonstrar:
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; Resultado:
r1 r3 r3 _____________ _______________ _____________ $12,345.00 AUD12,345.00 $12,345.00
A única diferença entre essas três colunas é o elemento de formato de moeda. O primeiro usa
L , o segundo usa C , e o terceiro usa U . Todos eles usam o
fm modificador de formato para suprimir qualquer preenchimento. Eles também usam o 9 e 0 elementos de formato para gerar os números (o 0 elemento inclui zeros à esquerda/à direita). Eles também incluem um separador de grupo (representado por G ), um caractere decimal (representado por D ). Duas moedas
No exemplo acima, defino o
NLS_TERRITORY para Australia . Isso resultou no mesmo símbolo de moeda sendo retornado em duas das três colunas (ou seja, o r1 e r3 colunas). No exemplo a seguir, uso um território diferente:
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; Resultado:
r1 r3 r3 ______________ _______________ _____________ kr12.345,00 DKK12.345,00 €12.345,00
Desta vez, temos um símbolo de moeda diferente para cada um dos
r1 e r3 colunas. Consulte Como verificar os valores dos parâmetros NLS se precisar verificá-los.
O 'nlsparam' Argumento
Ao usar o
TO_CHAR() função, a 'nlsparam' O argumento pode ser usado para especificar o caractere decimal e o separador de grupo, o símbolo de moeda local e o símbolo de moeda internacional. Ele assume a seguinte forma:
'NLS_NUMERIC_CHARACTERS = ''dg''
NLS_CURRENCY = ''text''
NLS_ISO_CURRENCY = territory ' Exemplo:
SELECT
TO_CHAR(
1234.56,
'fmL99G999D99',
'NLS_NUMERIC_CHARACTERS = '',.''
NLS_CURRENCY = ''€''
NLS_ISO_CURRENCY = Germany'
)
FROM DUAL; Resultado:
€1.234,56
Aqui está novamente, mas desta vez eu substituo
L com C no modelo de formato:SELECT
TO_CHAR(
1234.56,
'fmC99G999D99',
'NLS_NUMERIC_CHARACTERS = '',.''
NLS_CURRENCY = ''€''
NLS_ISO_CURRENCY = Germany'
)
FROM DUAL; Resultado:
EUR1.234,56
O
C retorna o símbolo de moeda ISO, que neste caso é EUR . Veja esta Lista Completa de Elementos de Formato de Número no Oracle para obter uma lista de elementos de formato que podem ser usados para formatar números com o
TO_CHAR() função.