sql >> Base de Datos >  >> RDS >> Oracle

Cómo manejar la pérdida de precisión en los tipos numéricos de JDBC debido a las funciones de agrupación

Esta es una especulación basada en un comportamiento similar en el controlador de Postgres postgresql-9.4-1204-jdbc42.jar .

Para un NUMERIC no especificado la base de datos no parece almacenar ninguna información particular sobre la precisión y la escala de la columna. Esto permite que la base de datos almacene internamente el valor de cualquier manera que parezca adecuada. De https://www.postgresql.org/docs/current/ estático/tipo-de-datos-numérico.html

Dado que el conductor no sabe cuál es el máximo específico de implementación del servidor es que no puede devolver los valores reales. Devuelve 0 para indicar que no conoce los valores reales y no quiere hacer conjeturas informadas.

Parece que la situación es lo mismo con Oracle . La precisión máxima puede ser mayor, pero portabilidad está garantizado solo hasta 38 dígitos.

En cuanto a resolver el problema en la pregunta, como indicó StanislavL, puede forzar el valor a una precisión/escala específica mediante la conversión.