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

如何在PostgreSQL中用format()或to_char()格式化指定数字格式

药品价格格式化需求及问题

需要将药品售价格式化为整数部分用下划线作为千位分隔符、小数部分固定显示四位的格式(示例:31_235.3400)。使用PostgreSQL的to_char()函数尝试时未得到正确结果,尝试的查询语句如下:

SELECT
    fk_id,
    prod_id,
    a_id,
    CASE 
    WHEN LENGTH(TO_CHAR(price, 'FM999999999D9999999')) <= 4 THEN TO_CHAR(price, '999D0000')
    ELSE TO_CHAR(price, 'FM999999999999999_999D0000') END as price
FROM sellings

输入表

FK_idprice
1156.00
1213.00
1359.00
1620.00
1110.00
197.00
11000.00
11090.40

期望输出表

FK_idprice
1156.0000
1213.0000
1359.0000
1620.0000
1110.0000
197.0000
11_000.0000
11_090.4000
正确的PostgreSQL格式化方法

无需用CASE分支判断整数长度,直接使用to_char()的自定义格式模板即可实现需求:

SELECT
    fk_id,
    prod_id,
    a_id,
    TO_CHAR(price, 'FM999999999999_999_999D0000') AS price
FROM sellings;

格式模板解析

  • FM:移除结果中的前导空格,避免短整数前出现多余空白
  • 999999999999_999_999:定义整数部分的显示规则,_作为千位分隔符,多个9支持更大范围的整数(可根据实际数值范围调整9的数量)
  • D:代表小数点,确保输出使用.作为分隔符(若数据库区域设置影响,可直接替换为.)
  • 0000:强制小数部分显示四位,不足位数自动补0

该模板会自动适配所有整数长度:三位数及以下无下划线,四位数及以上自动用下划线分隔千位,小数部分始终保持四位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:41:06