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.