Dies ist einer der vielen Gründe, warum PostgreSQL money
type war veraltet und sollte vermieden werden
. Seltsamerweise zeigen neuere Versionen der gleichen Dokumentation keine Verfallswarnung aber ich und andere
stimme dem nicht zu und denke, dass von seiner Verwendung abgeraten werden sollte.
Wenn möglich, ändern Sie Ihr Schema so, dass es numeric
verwendet stattdessen wie numeric(17,2)
B. nur ganzzahlige Cents speichern wollen, oder etwas genauer für Zwischenwerte. Sie werden einen Albtraum haben, wenn Sie mit money
arbeiten in HQL, bis zu dem Punkt, an dem sogar Javas BigDecimal
Klasse (normalerweise verwendet, um numeric
abzubilden Felder) ist trotz der schrecklich ungeschickten Syntax der itsw-Arithmetik besser.
Ich würde ein ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric );
und vergiss das money
Typ existierte, wenn ich Sie wäre.