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

Armazenando zeros à direita no banco de dados com JPA e Oracle


Você não pode resolvê-lo, e eu sugiro que não é um problema. É assim que a Oracle armazena NUMBER valores:com a menor precisão necessária. Se você inseriu o preço como 4.00 ele seria armazenado como 4 .

Observe que o Java também não terá como padrão dois decimais ao exibir o valor. Você precisa especificar o número de casas decimais.

E, se possível, eu usaria BigDecimal em vez de float pelo preço. O float tipo não é preciso. Uma alternativa é usar um dos tipos inteiros (int ou long ) e gerencie você mesmo as casas decimais.

Para formatar o preço para exibição em seu código Java, use String.format("%.2f", price) .

Para formatar o preço em uma consulta Oracle, use TO_CHAR :
SELECT TO_CHAR(price, '999999990.00'), etc.

Escolha o número de placeholders que é melhor para você e observe que o Oracle colocará um espaço extra no início do resultado. Ele deve conter um sinal de menos se o número for negativo, mas para zero/positivo é um espaço. Para se livrar do espaço use o FM modificador no TO_CHAR :
SELECT TO_CHAR(price, 'FM999999990.00'), etc.