You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Postgres与Beekeeper Studio中money类型的全局货币符号

问题解答

结论

可以实现,但不推荐直接调整money类型的全局显示规则,更建议换用数值类型存储+自定义格式化的方案,具体实现方式如下:

方案1:修改全局lc_monetary区域参数(直接改money类型显示规则,全局生效)

PostgreSQL的money类型的货币符号、小数位格式、千位分隔符完全由lc_monetary区域配置控制,你现在看到的R$是因为当前数据库用的是巴西葡萄牙语区域(pt_BR.UTF-8)。要全局修改符号为ʛ,操作步骤如下:

  1. 先确认当前的区域配置:
SHOW lc_monetary;
  1. 如果你要对所有访问该数据库的用户生效,可以直接修改数据库级别的配置(PostgreSQL 12及以上版本支持):
ALTER DATABASE 你的实际数据库名 SET lc_monetary = '对应包含ʛ符号的locale名称';

修改完成后,所有新建立的数据库连接都会生效,已有连接需要断开重连才能看到效果。

注意:这个方案的前提是你的服务器操作系统层面存在对应包含ʛ符号的locale配置,如果没有对应locale会报错无法生效,这种情况下建议用第二个方案。

方案2:改用numeric类型存储+自定义视图(最稳妥,完全可控)

money类型本身存在较多兼容性隐患,不同区域的客户端读写时容易出现解析错误,生产环境基本不会使用该类型。更推荐你把货币字段改成numeric类型,通过公共视图实现全局统一的格式化效果:

  1. 修改原表字段类型:
ALTER TABLE produto ALTER COLUMN valor_produto TYPE numeric USING valor_produto::text::numeric;
  1. 创建公共查询视图,所有用户访问视图即可看到统一带ʛ符号的结果:
CREATE OR REPLACE VIEW public.produto_public AS
SELECT
  id,
  codigo_produto,
  nome_produto,
  descricao_produto,
  estoque_produto,
  fabricacao_produto,
  'ʛ' || to_char(valor_produto, 'FM99999999.00') AS valor_produto
FROM produto;

这个方案完全不受客户端或者数据库区域配置影响,所有用户的查询结果完全一致。

内容的提问来源于stack exchange,提问作者Guilherme Gusman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:48:05