Ini adalah spekulasi berdasarkan perilaku serupa di driver Postgres postgresql-9.4-1204-jdbc42.jar
.
Untuk NUMERIC
yang tidak ditentukan database tampaknya tidak menyimpan informasi tertentu tentang ketepatan dan skala kolom. Ini memungkinkan database untuk menyimpan nilai secara internal dengan cara apa pun yang sesuai. Dari https://www.postgresql.org/docs/current/ static/datatype-numeric.html
Sejak pengemudi tidak tahu apa implementasi spesifik maksimum dari server adalah, itu tidak dapat mengembalikan nilai sebenarnya. Ia mengembalikan 0 untuk menunjukkan bahwa ia tidak mengetahui nilai sebenarnya, dan tidak ingin membuat tebakan yang terpelajar.
Sepertinya situasinya sama dengan Oracle . Presisi maksimal mungkin lebih tinggi, tetapi portabilitas dijamin hanya sampai 38 digit.
Untuk memecahkan masalah dalam pertanyaan, seperti yang ditunjukkan StanislavL, Anda dapat memaksa nilai ke presisi/skala tertentu dengan mentransmisi.