sql >> Databasteknik >  >> RDS >> PostgreSQL

Jasper Report:kan inte få värde för fältet 'x' i klassen 'org.postgresql.util.PGmoney'

Detta är en av flera anledningar till att PostgreSQL pengar typ fasades ut och bör undvikas . Konstigt nog visar nyare versioner av samma dokumentation inte utfasningsvarningen men jag och andra håller inte med om det och tycker att användningen bör avskräckas.

Om det är möjligt, ändra ditt schema till att använda numerisk istället som numeric(17,2) om du bara vill lagra heltalscent, eller något mer exakt för mellanvärden. Du kommer att ha en mardröm när du arbetar med pengar i HQL, till den punkt där även Javas BigDecimal klass (används vanligtvis för att mappa numerisk fields) är bättre trots den oerhört klumpiga syntaxen i dess aritmetik.

Jag skulle göra en ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric ); och glöm pengarna typ existerade om jag var du.




  1. PHP / SQL, enkelt välj var får värdet som kolumn

  2. Välj N poster för varje kategori och ordna efter X

  3. Ladda upp blob-filer/bilder till Mysql

  4. Uppdatera kapslad nyckel med postgres json-fält i Rails