Toto je jeden z několika důvodů, proč PostgreSQL money
typ byl zastaralý a je třeba se mu vyhnout
. Kupodivu novější verze stejné dokumentace nezobrazují upozornění na ukončení podpory ale já a další
s tím nesouhlasím a myslím si, že by se od jeho používání mělo odrazovat.
Pokud je to jen trochu možné, změňte schéma na použití numeric
místo toho jako numeric(17,2)
pokud chcete ukládat pouze celá čísla centů nebo něco přesnějšího pro mezihodnoty. Při práci s money
budete mít noční můru v HQL až do bodu, kdy dokonce BigDecimal
v Javě třída (obvykle se používá k mapování numeric
pole) je lepší navzdory strašně neobratné syntaxi itsw aritmetiky.
Udělal bych ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric );
a zapomeňte na money
typ existoval, kdybych byl tebou.