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.