Dette er en af flere grunde til, at PostgreSQL penge
typen blev udfaset og bør undgås
. Mærkeligt nok viser nyere versioner af den samme dokumentation ikke advarslen om udfasning men jeg og andre
er uenig i det og mener, at det bør frarådes at bruge det.
Hvis det overhovedet er muligt, skal du ændre dit skema til at bruge numerisk
i stedet som numeric(17,2)
hvis du kun ønsker at gemme hele tal cents, eller noget mere præcist for mellemværdier. Du vil have et mareridt af en tid, når du arbejder med penge
i HQL, til det punkt, hvor selv Javas BigDecimal
klasse (bruges normalt til at kortlægge numerisk
fields) er bedre på trods af den frygtelig klodsede syntaks i dens aritmetik.
Jeg ville lave en ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric ); og glem
pengene
type eksisterede, hvis jeg var dig.