sql >> Databasteknik >  >> RDS >> Oracle

Lagring av efterföljande nollor i databasen med JPA och Oracle

Du kan inte lösa det, och jag skulle föreslå att det inte är ett problem. Det är precis hur Oracle lagrar NUMBER värden:med minsta möjliga precision som behövs. Om du angav priset som 4.00 den skulle lagras som 4 .

Observera att Java inte som standard har två decimaler heller när värdet visas. Du måste ange antalet decimaler.

Och om möjligt skulle jag använda BigDecimal istället för float för priset. float typen är inte exakt. Ett alternativ är att använda en av heltalstyperna (int eller long ) och hantera decimalerna själv.

För att formatera priset för visning i din Java-kod, använd String.format("%.2f", price) .

För att formatera priset i en Oracle-fråga, använd TO_CHAR :

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

Välj det antal platshållare som är bäst för dig och notera att Oracle lägger ett extra mellanslag i början av resultatet. Det är tänkt att hålla ett minustecken om talet är negativt, men för noll/positivt är det ett mellanslag. Använd FM för att bli av med utrymmet modifierare i TO_CHAR :

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



  1. Databasoberoende MAX()-funktion i SQLAlchemy

  2. Hur man undviker två olika trådar läser samma rader från DB (Hibernate och Oracle 10g)

  3. Hur man konfigurerar syntaxmarkering i SQLcl

  4. Hur man infogar json array i mysql databas