Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

4 maneiras de formatar um número sem decimais no Oracle


Ao usar o Oracle Database, você pode usar funções como TO_CHAR(number) para retornar números como uma string. Isso permite que você formate o número para ter um número específico de casas decimais – incluindo sem casas decimais, se for o que você deseja.

Você também pode usar funções como ROUND(number) e TRUNC(number) para arredondar ou truncar o número sem casas decimais.

Há também o CAST() função que permite converter um tipo de dados como um inteiro, o que efetivamente remove quaisquer casas decimais.

O TO_CHAR() Função


Aqui está um exemplo que usa o TO_CHAR(number) função:
SELECT TO_CHAR(1234.56, 'fm99G999')
FROM DUAL;

Resultado:
1,235

Neste caso, meu modelo de formato consiste em:
  • um fm , que é um modificador de formato que remove quaisquer caracteres de preenchimento à esquerda e/ou à direita que possam ser adicionados ao resultado.
  • vários 9 caracteres, que representam cada dígito
  • um G caractere, que representa um separador de grupo com reconhecimento de localidade

O importante a notar é que ele não usa o D elemento de formato, que é o caractere decimal com reconhecimento de formato. Também não usa caracteres decimais literais (como vírgula ou ponto). E como não possui caracteres decimais, obviamente não há dígitos após esse caractere.

Se nós fizemos tem um caractere decimal, qualquer 9 ou 0 elementos à direita dele podem resultar na inclusão de casas decimais no resultado.

Exemplo:
SELECT TO_CHAR(7, 'fm99D00')
FROM DUAL;

Resultado:
7.00

Para suprimir os zeros à direita, podemos alterar o 0 caracteres para 9 s. No entanto, removendo o fm modificador pode resultar em zeros à direita aparecendo mesmo ao usar o 9 elemento de formato.

Aqui está uma comparação para ilustrar o que quero dizer:
SELECT 
    TO_CHAR(7, 'fm99D00') AS "r1",
    TO_CHAR(7, 'fm99D99') AS "r2",
    TO_CHAR(7, '99D99') AS "r3"
FROM DUAL;

Resultado:
     r1    r2        r3 
_______ _____ _________ 
7.00    7.      7.00   

O ROUND() Função


Aqui está um exemplo que usa o ROUND(number) função:
SELECT ROUND(1234.56, 0)
FROM DUAL;

Resultado:
1235

O ROUND() função arredonda um número para uma determinada casa decimal. Aqui, especificamos zero casas decimais, o que remove todas as casas decimais do número.

Neste caso, o número foi arredondado para cima.

O TRUNC() Função


Aqui está um exemplo que usa o TRUNC(number) função:
SELECT TRUNC(1234.56, 0)
FROM DUAL;

Resultado:
1234

O TRUNC() função trunca um número para uma determinada casa decimal. Não ocorre arredondamento. Portanto, esse número foi truncado para zero casas decimais, sem arredondamento.

O CAST() Função


Aqui está um exemplo que usa o CAST() função:
SELECT CAST(1234.56 AS INT) 
FROM DUAL;

Resultado:
1235

O CAST() função converte seu argumento para um tipo de dados diferente. Neste caso, convertemos o número para um inteiro. Os inteiros não têm casas decimais e, portanto, todas as partes fracionárias são removidas do resultado (incluindo o caractere decimal). Observe que o resultado foi arredondado para cima.