Dies ist eine Spekulation, die auf einem ähnlichen Verhalten im Postgres-Treiber postgresql-9.4-1204-jdbc42.jar
basiert .
Für einen nicht spezifizierten NUMERIC
Die Datenbank scheint keine besonderen Informationen zur Genauigkeit und Skalierung der Spalte zu speichern. Dadurch kann die Datenbank den Wert intern so speichern, wie es geeignet erscheint. Von https://www.postgresql.org/docs/current/ static/datatype-numeric.html
Da der Treiber weiß nicht, was das implementierungsspezifische Maximum des Servers ist Das heißt, es kann nicht die tatsächlichen Werte zurückgeben. Es gibt 0 zurück, um anzuzeigen, dass es die tatsächlichen Werte nicht kennt und keine fundierten Vermutungen anstellen möchte.
Anscheinend ist die Situation gleich mit Oracle . Die maximale Genauigkeit kann höher sein, aber Portabilität wird nur bis zu 38 Ziffern garantiert.
Um das Problem in der Frage zu lösen, können Sie, wie StanislavL angab, den Wert durch Gießen auf eine bestimmte Genauigkeit/Skala zwingen.