Oracle
 sql >> Database >  >> RDS >> Oracle

Memorizzazione degli zeri finali nel database con JPA e Oracle

Non puoi risolverlo e suggerirei che non è un problema. È così che Oracle memorizza NUMBER valori:con la minima precisione necessaria. Se hai inserito il prezzo come 4.00 verrebbe memorizzato come 4 .

Nota che Java non utilizzerà per impostazione predefinita due decimali durante la visualizzazione del valore. Devi specificare il numero di cifre decimali.

E, se possibile, userei BigDecimal invece di float per il prezzo. Il float il tipo non è preciso Un'alternativa consiste nell'usare uno dei tipi interi (int o long ) e gestisci tu stesso le cifre decimali.

Per formattare il prezzo da visualizzare nel codice Java, utilizza String.format("%.2f", price) .

Per formattare il prezzo in una query Oracle, utilizza TO_CHAR :

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

Scegli il numero di segnaposto più adatto a te e tieni presente che Oracle inserirà uno spazio aggiuntivo all'inizio del risultato. È pensato per contenere un segno meno se il numero è negativo, ma per zero/positivo è uno spazio. Per liberarti dello spazio usa il FM modificatore nel TO_CHAR :

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