Exemplos de TO_CHAR recebendo parâmetros numéricos, todos exemplos abaixo foram executados no servidor CLOUD da Oracle.
Recebe parâmetro number e retorna um varchar2
Usa as mesmas máscaras e formatos e variáveis de sessão do função to_number.
O TO_CHAR(number, format, nls_parameters) o número pode estar entre aspas simples que irá executar sem problemas.
Formato G/D e ponto e vírgula (.,) com variável de sessão
As pontuações só troca com formato G/D, se for fixado o (,.) então não irá trocar mesmo que informe o NLS_NUMERIC_CHARACTERSTO_CHAR(1234.56,'L0G000D00', 'NLS_NUMERIC_CHARACTERS=,.')'$1.234,56'
TO_CHAR(1234.56,'L0,000.00', 'NLS_NUMERIC_CHARACTERS=,.')
‘$1,234.56'
to_char(7500.00,'FML9G999D00', 'NLS_CURRENCY=''R$ '' NLS_NUMERIC_CHARACTERS=,.')'R$ 7.500,00'
to_char(7500.00,'FML9G999D99', 'NLS_CURRENCY=''R$ '' NLS_NUMERIC_CHARACTERS=,.') 'R$ 7.500,'
to_char(7500.00,'L9G999D99', 'NLS_CURRENCY=''R$ '' NLS_NUMERIC_CHARACTERS=,.') ' R$ 7.500,00'
Observação:to_char(123.88,'9,999') = 124
to_char(123.88,'9,99') = 1,24
to_char(1235.88,'9,99') = #####
Restrições:
A máscara vírgula não pode iniciar um modelo de formato numérico. Exemplo: to_char(123.88,’,999′) = erro
Uma vírgula não pode aparecer à direita de um caractere ou ponto decimal em um modelo de formato numérico.
Formato 0 e 9
TO_CHAR(0,'0.99') = '0.00'
TO_CHAR(0,'FM0.99') = '0.'
TO_CHAR(0,'FM9.99') = '0.'
TO_CHAR(0.00,'FM9.99') = '0.'
Formato $
Obs: o símbolo do dólar usado em qualquer posição da máscara sempre irá retornar do lado esquerdo do número.
to_char(1234,'$9999') = $1234
to_char(1234,'$99999') = $1234
to_char(123,'$0000') = $0123
to_char(123,'$0999') = $0123
to_char(123,'00$999') = $00123
to_char(123,'009$99') = $00123
to_char(123,'00999$') = $00123
TO_CHAR('123','$B999') = ' $123'
to_char(123,'$$999') = invalid number format
to_char(123,'$ 999') = invalid number format, não pode conter espaços
Formato B
TO_CHAR(0.00,'B9.99') = ' '
TO_CHAR(0,'B0') = ' '
to_char(123,'9B99') = ' 123' obs: tem um espaço em branco
to_char(123,'9b99') = ' 123'
to_char(123,'B999') = ' 123
to_char(123,'999B') = ' 123
to_char(123,'BB999') = Invalid number format
to_char(123,'B999B') = Só é permitido um B
Formato C
TO_CHAR(123,'C999') = ' USD123'
NLS_ISO_CURRENCY
TO_CHAR(123,'C999', 'NLS_ISO_CURRENCY=BRAZIL') = ' BRL123'
TO_CHAR(123,'C999', 'NLS_ISO_CURRENCY=AMERICA') = ' USD123'
TO_CHAR(123,'C999', 'NLS_ISO_CURRENCY=PORTUGAL') = ' EUR123'
TO_CHAR(123,'C999', 'NLS_ISO_CURRENCY=EURO') = INVALID NLS PARAMETER STRING USED IN SQL FUNCTION
TO_CHAR(123,'C999', 'NLS_ISO_CURRENCY=EUROPE') = INVALID NLS PARAMETER STRING USED IN SQL FUNCTION
TO_CHAR(123,'C999', 'NLS_ISO_CURRENCY=BRL') = INVALID NLS PARAMETER STRING USED IN SQL FUNCTION
OBS: CASO QUEIRA TRAZER NO FORMATO EUR, USAR A MÁSCARA U CASO O NLS_DUAL_CURRENCY ESTEJA CONFIGURADO PARA EUR
Formato U
O formato U no padrão americano está como $. Se quiser outro formato basta usar o NLS_DUAL_CURRENCY
TO_CHAR(123,'U000','NLS_DUAL_CURRENCY=EUROPE') = ' EUROPE123'
OU
TO_CHAR(123,'U000','NLS_DUAL_CURRENCY=EUR') = ' EUR123' TO_CHAR(123.5,'U999') = ' $124'
Máscara
C usa com NLS_ISO_CURRENCY
U usa com NLS_DUAL_CURRENCY
Formato EEEE
TO_CHAR(123,'9.99EEEE') = 1.23E+02
-- RETORNA OS 3 MAIORES NÚMEROS SIGNIFICANTES
TO_NUMBER(TO_CHAR(0.0456789,'9.99EEEE')) = 0.0457
TO_NUMBER(TO_CHAR(12356,'9.99EEEE')) = 12400
TO_CHAR(12356,'999.EEEE') = 1.E+04
TO_CHAR(12356,'9.EEEE') = 1.E+04
TO_CHAR(12356,'9.9999EEEE') = 1.2356E+04
TO_CHAR(12356,'99.999EEEE') = 1.236E+04
--TO_NUMBER COM TO_CHAR
TO_NUMBER(TO_CHAR(12356,'9.EEEE')) = 10000
TO_NUMBER(TO_CHAR(12356,'9.9999EEEE')) = 123456
Formato PR
Quanto mais noves 9 colocar na máscara mais espaços irão ser criados.TO_CHAR(123,'999PR') = ' 123 '
TO_CHAR(123-,'9999PR') = ORA-00936: missing expression
TO_CHAR(123-23,'9999PR') = ' 100 '
TO_CHAR(123,'99999999PR') = ' 123 '
TO_CHAR(-123,'99999999PR') = ' <123>'
TO_CHAR(-123,'999PR') = '<123>'TO_CHAR(-123.5,'999PR') = '<124>‘
Formato RN
TO_CHAR(10,'RN') = ' X'
Formato V
TO_CHAR(10,'99V99') = ' 1000'
Formato L
TO_CHAR(234,'L999', 'NLS_CURRENCY=R$') = R$234
TO_CHAR(234,'L 999', 'NLS_CURRENCY=R$') = ERRO, NÃO PODE TER ESPAÇO.
TO_CHAR(234,'L0999', 'NLS_CURRENCY=R$') = ' R$0234'
TO_CHAR(2,'L0999', 'NLS_CURRENCY=R$') = ' R$0002'
TO_CHAR(1234.56,'L0999.99','NLS_CURRENCY=R$') = ' R$1234.56'
TO_CHAR(1234.56,'L0000.00','NLS_CURRENCY=R$') = ' R$1234.56'
TO_CHAR(123,'FML999','NLS_CURRENCY=''R$ ''') = 'R$ 123'
TO_CHAR(123,'FML999.00','NLS_CURRENCY=''R$ ''') = 'R$ 123.00'
Formato MI
Obs: Só funciona do lado direito.
Caso o número seja negativo, irá mostrar o sinal do lado direito.TO_CHAR(123,'999MI') = 123— Só funciona do lado direito
TO_CHAR(-123,'999MI') = 123- TO_CHAR(-123,'MI999') = Invalid number format modelTO_CHAR('<123>','999MI') = Invalid number
Formato S (prefix, suffix)
TO_CHAR('123','S999') = +123
TO_CHAR('123','999S') = 123+
TO_CHAR('123','9S99') = Invalid number format model
TO_CHAR('123','$S999') = Invalid number format model
TO_CHAR('123','S$999') = +$123
TO_CHAR('123','999$S') = $123+
TO_CHAR('-123','999$S') = $123-
Formato TM
Retorna o mínimo número de caracteres possível.
TM e TM9 = traz o número normal, a não ser que exceda 64 caracteres, se exceder o TM9 irá retornar o número em notação científica.
TME = Traz o número em notação científica
TO_CHAR(123546.05465,'TM9') = 123546.05465
TO_CHAR(123546.05465,'TM') = 123546.05465
TO_CHAR(1111111111222222222233333333334444444444555555555566666666667777,'TM') = 1111111111222222222233333333334444444445000000000000000000000000 = Estorou no 41
–TM9 = só trouxe em notação científica se exceder 64 caracteres. TO_CHAR(11111111112222222222333333333344444444445555555555666666666677777,'TM9') =
1.11111111122222222223333333333444444444E+64
— TMe = case incensitive, traz o número em notação científica TO_CHAR(1111111111222222222233333333334444444444555555555566666666667777,'TME') =
1.111111111222222222233333333334444444445E+63
TO_CHAR(1234,'TME') = 1.234E+03
TO_CHAR(1,'TME') = 1E+00
TO_CHAR(.1,'TME') = 1E-01
TO_CHAR(0,'TME') = 0E+00
TM Restrições = não pode usar TM com os dois 9E ou E9 apenas um e não ambos (TM ou TM9 ou TME).
Formato X
Retorna o valor hexadecimal do número especificado de dígitos. Se o número especificado não for um número inteiro, o Oracle Database o arredondará para um número inteiro.
Restrições: Este elemento aceita apenas valores positivos ou 0. Valores negativos retornam um erro. Você pode preceder esse elemento apenas com 0 (que retorna zeros à esquerda) ou FM. Quaisquer outros elementos retornam um erro. Se você não especificar 0 nem FM com X, o retorno sempre terá um espaço em branco à esquerda. Consulte o modificador de modelo de formato FM para obter mais informações.
TO_CHAR(10,'x') = ' a'
TO_CHAR(100,'X') = '##'
TO_CHAR(100,'XXX') = ' 64'