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
9caracteres, que representam cada dígito - um
Gcaractere, 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.