在PostgreSQL中格式化双精度

ung*_*ban 6 postgresql floating-point formatting

我有一个有3列的表:

  customer_name varchar
 ,account_type varchar
 ,current_balance double precision
Run Code Online (Sandbox Code Playgroud)

current_balance的示例值:

1200
1500.5
1500

我希望它们显示如下:

1200.00
1500.50
1500.00

我尝试了以下查询:

SELECT to_char(current_balance,'9999999999999999D99')
  FROM bank;
Run Code Online (Sandbox Code Playgroud)

它按我想要的方式格式化,但在开头添加空格.怎么解决这个?有更好的格式化方法吗?

leo*_*loy 8

正如评论中已经指出的那样,使用浮点类型(真实,双重,浮动)来实现货币余额不好的设计.这会让你陷入困境.请DECIMAL改用.


Cha*_*les 7

您可以使用trim删除多余的空格.没有参数,它只删除空格.

charles=# SELECT to_char(12345.67,'99999999999999999D99');
        to_char
-----------------------
              12345.67
(1 row)

charles=# SELECT trim(to_char(12345.67,'99999999999999999D99'));
  btrim
----------
 12345.67
(1 row)
Run Code Online (Sandbox Code Playgroud)

  • 迟到了,但有人应该提到'99 ... 0D99'作为0.00要求的可能解决方案. (2认同)