Oracle
 sql >> Base de données >  >> RDS >> Oracle

Stockage des zéros de fin dans la base de données avec JPA et Oracle

Vous ne pouvez pas le résoudre, et je dirais que ce n'est pas un problème. C'est ainsi qu'Oracle stocke NUMBER valeurs :avec le moins de précision nécessaire. Si vous avez saisi le prix sous la forme 4.00 il serait stocké sous 4 .

Notez que Java n'utilisera pas non plus deux décimales par défaut lors de l'affichage de la valeur. Vous devez spécifier le nombre de décimales.

Et, si possible, j'utiliserais BigDecimal au lieu de float pour le prix. Le float le type n'est pas précis. Une alternative consiste à utiliser l'un des types entiers (int ou long ) et gérez vous-même les décimales.

Pour formater le prix à afficher dans votre code Java, utilisez String.format("%.2f", price) .

Pour formater le prix dans une requête Oracle, utilisez TO_CHAR :

SELECT TO_CHAR(price, '999999990.00'), etc.

Choisissez le nombre d'espaces réservés qui vous convient le mieux et notez qu'Oracle mettra un espace supplémentaire au début du résultat. Il est censé contenir un signe moins si le nombre est négatif, mais pour zéro/positif, c'est un espace. Pour vous débarrasser de l'espace utilisez le FM modificateur dans le TO_CHAR :

SELECT TO_CHAR(price, 'FM999999990.00'), etc.