Đây là một trong những lý do khiến PostgreSQL money
type không được dùng nữa và nên tránh sử dụng
. Kỳ lạ là các phiên bản mới hơn của cùng một tài liệu không hiển thị cảnh báo không dùng nữa nhưng tôi và những người khác
không đồng ý với điều đó và nghĩ rằng việc sử dụng nó nên được khuyến khích.
Nếu có thể, hãy thay đổi giản đồ của bạn để sử dụng numeric
thay vào đó, như numeric(17,2)
nếu bạn chỉ muốn lưu trữ số xu hoặc thứ gì đó chính xác hơn cho các giá trị trung gian. Bạn sẽ gặp ác mộng về thời gian làm việc với money
trong HQL, đến mức ngay cả BigDecimal
của Java lớp (thường được sử dụng để ánh xạ numeric
trường) tốt hơn mặc dù cú pháp số học vô cùng vụng về của nó.
Tôi sẽ thực hiện một ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric );
và quên money
loại tồn tại nếu tôi là bạn.