sql >> Databáze >  >> RDS >> Oracle

Jak zvládnout ztrátu přesnosti u numerických typů JDBC kvůli funkcím seskupování

Toto je spekulace založená na podobném chování v ovladači Postgres postgresql-9.4-1204-jdbc42.jar .

Pro blíže nespecifikovaný NUMERIC zdá se, že databáze neukládá žádné konkrétní informace o přesnosti a měřítku sloupce. To umožňuje databázi interně uložit hodnotu jakýmkoli způsobem, který se zdá být vhodný. Z https://www.postgresql.org/docs/current/ static/datatype-numeric.html

Protože ovladač nezná maximální implementační konkrétní maximum serveru to znamená, že nemůže vrátit skutečné hodnoty. Vrací 0, což znamená, že nezná skutečné hodnoty a nechce dělat žádné kvalifikované odhady.

Zdá se, že situace je stejná jako u společnosti Oracle . Maximální přesnost může být vyšší, ale přenositelnost je zaručeno pouze do 38 číslic.

Pokud jde o vyřešení problému v otázce, jak naznačil StanislavL, můžete hodnotu vynutit na konkrétní přesnost/měřítko litím.



  1. Je COUNT(rowid) rychlejší než COUNT(*)?

  2. Jak uložit html do databáze mysql

  3. Žádné příkazy připravené na straně serveru pomocí MySQL Connector/J

  4. Jak:porovnat (vyhledat mezeru) proti (připojit se ke sloupci z jiné tabulky)