我使用的是带有 Latin1 编码的 Postgres。如何以货币形式格式化值,例如:1,200.50
?
postgres 的本机功能在 latin1 中不起作用,我不能 将数据库转换为 utf-8。有谁知道如何格式化?要么 至少有一个想法,如何在sql中直接改变charset而不影响整个数据库?
答案 0 :(得分:0)
要确定如何呈现组分隔符和小数分隔符,您必须正确设置 lc_numeric
。您还必须正确设置 lc_monetary
,否则您可能会收到错误,指出 LATIN1
中不存在货币符号(这令人惊讶,但似乎是 to_char
实现的一部分).
SET lc_numeric = "en_US";
SET lc_monetary = "en_US";
SELECT to_char(1200.50, 'FM999G999G999D00');
to_char
----------
1,200.50
(1 row)
这是在 Linux 机器上。在不同的操作系统上,区域设置名称可能不同。
这与数据库的编码无关。
但是,您必须使用与数据库编码 LATIN1
兼容的客户端编码。那不可能是 WIN1252
,但这是一个独立的问题。