Du kan ikke løse det, og jeg vil foreslå, at det ikke er et problem. Det er bare sådan, Oracle gemmer NUMBER
værdier:med den mindst nødvendige præcision. Hvis du har indtastet prisen som 4.00
det ville blive gemt som 4
.
Bemærk, at Java heller ikke som standard har to decimaler, når værdien vises. Du skal angive antallet af decimaler.
Og hvis det er muligt, ville jeg bruge BigDecimal
i stedet for float
til prisen. float
typen er ikke præcis. Et alternativ er at bruge en af heltaltyperne (int
eller long
) og administrer selv decimalerne.
For at formatere prisen for visning i din Java-kode skal du bruge String.format("%.2f", price)
.
For at formatere prisen i en Oracle-forespørgsel skal du bruge TO_CHAR
:
SELECT TO_CHAR(price, '999999990.00'), etc.
Vælg det antal pladsholdere, der er bedst for dig, og bemærk, at Oracle vil sætte et ekstra mellemrum i begyndelsen af resultatet. Det er meningen, at det skal holde et minustegn, hvis tallet er negativt, men for nul/positiv er det et mellemrum. Brug FM
for at slippe af med pladsen modifikator i TO_CHAR
:
SELECT TO_CHAR(price, 'FM999999990.00'), etc.