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ą.