为PostgreSQL设置lc_monetary

时间:2019-01-06 19:10:18

标签: postgresql collation postgresql-10

如何设置lc_monetary以将moneydocs)数据类型显示为EUR?

我尝试过:

  • 更改postgresql.conf并设置lc_monetary="de_DE.UTF-8@euro。 PG不会以此更改开头(当前设置为en_US.UTF-8
  • 通过pgAdmin和psql进行相同的操作(使用set),我得到ERROR: invalid value for parameter "lc_monetary"

我当前的排序规则是en_US.UTF-8

1 个答案:

答案 0 :(得分:2)

语言环境取决于操作系统。检查可用的语言环境

select * 
from pg_collation
where collname ~ any(array['DE', 'FR', 'GR', 'IE'])

  collname  | collnamespace | collowner | collencoding | collcollate | collctype  
------------+---------------+-----------+--------------+-------------+------------
 en_IE      |            11 |        10 |            6 | en_IE.utf8  | en_IE.utf8
 en_IE.utf8 |            11 |        10 |            6 | en_IE.utf8  | en_IE.utf8
(2 rows)

好吧,我的Ubuntu不会说德语,法语或希腊语,但是爱尔兰人会说英语,并用欧元付款。

set lc_monetary to "en_IE.utf8";
select 10::money;

 money  
--------
 €10.00
(1 row)

在Windows中,很可能that the comp speaks German:

set lc_monetary to "de-DE";

很遗憾,pg_collation没有显示此内容。