Jest to jeden z kilku powodów, dla których PostgreSQL pieniądze typ został przestarzały i należy go unikać
. Dziwne nowsze wersje tej samej dokumentacji nie wyświetlają ostrzeżenia o wycofaniu ale ja i inni
nie zgadzam się z tym i uważam, że należy odradzać jego używanie.
Jeśli to możliwe, zmień schemat tak, aby używał numeric zamiast tego, jak numeric(17,2) jeśli chcesz przechowywać tylko całe centy lub coś bardziej precyzyjnego dla wartości pośrednich. Będziesz miał koszmar związany z pracą z pieniędzmi w HQL, do tego stopnia, że nawet BigDecimal Javy klasa (zwykle używana do mapowania numeric pola) jest lepszy pomimo okropnie niezgrabnej składni jego arytmetyki.
Zrobiłbym ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric ); i zapomnij o pieniądze typ istniał, gdybym był tobą.