Esta é uma das várias razões pelas quais o PostgreSQL
dinheiro
type foi obsoleto e deve ser evitado
. Estranhamente versões mais recentes da mesma documentação não mostram o aviso de descontinuação mas eu e outros
discordo disso e acho que seu uso deve ser desencorajado. Se possível, altere seu esquema para usar
numeric
em vez disso, como numeric(17,2)
se você deseja armazenar apenas centavos inteiros ou algo mais preciso para valores intermediários. Você terá um pesadelo trabalhando com dinheiro
em HQL, a ponto de até o BigDecimal
do Java classe (geralmente usada para mapear numeric
campos) é melhor, apesar da sintaxe terrivelmente desajeitada de sua aritmética. Eu faria um
ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric ); e esqueça o dinheiro
tipo existia se eu fosse você.