sql >> Databasteknik >  >> RDS >> Oracle

Hur man hanterar förlusten av precision på JDBC-numeriska typer på grund av grupperingsfunktioner

Detta är spekulationer baserade på liknande beteende i Postgres-drivrutinen postgresql-9.4-1204-jdbc42.jar .

För en ospecificerad NUMERIC databasen verkar inte lagra någon speciell information om kolumnens precision och skala. Detta gör det möjligt för databasen att internt lagra värdet på något sätt som det verkar lämpligt. Från https://www.postgresql.org/docs/current/ static/datatype-numeric.html

Sedan föraren vet inte vilken implementeringsspecifika maximum för servern är att den inte kan returnera de faktiska värdena. Den returnerar 0 för att indikera att den inte känner till de faktiska värdena och inte vill göra några välgrundade gissningar.

Det verkar som att situationen är samma med Oracle . Den maximala precisionen kan vara högre, men portabilitet garanteras endast upp till 38 siffror.

När det gäller att lösa problemet i frågan, som StanislavL indikerade kan du tvinga värdet till en specifik precision/skala genom att kasta.



  1. MySql skillnad mellan två tidsstämplar i dagar?

  2. Oracle.DataAccess.Client.OracleException ORA-03135:anslutning förlorad kontakt

  3. SQL INSERT INTO... VÄLJ Exempel

  4. PostgreSQL-frågeutmatning som en excel-fil