【问题标题】:Display float column with leading sign显示带前导符号的浮点列
【发布时间】:2021-03-18 21:24:27
【问题描述】:

我将 PHP 与 PostgreSQL 一起使用。我有以下查询:

SELECT ra, de, concat(ra, de) AS com, count(*) OVER() AS total_rows
FROM mdust
LIMIT :pagesize OFFSET :starts

rade 列是浮点数,其中 de 可以是正数或负数,但是,de 不会返回与浮点数关联的 +。然而,它确实返回了 - 负号。我想要的是 concat(ra, de) 中的 de 列返回正号或负号。

我正在查看 PostgreSQL 的 this 文档,它提供了 to_char(1, 'S9'),这正是我想要的,但它只适用于整数。我找不到这样的浮点函数。

【问题讨论】:

    标签: postgresql number-formatting


    【解决方案1】:

    to_char() 也适用于 float。您只需要定义所需的输出格式。简单的模式S9 会截断小数位,并且对于大于 9 的数字会失败。

    test=> SELECT to_char(float '0.123'  , 'FMS9999990.099999')
    test->      , to_char(float '123'    , 'FMS9999990.099999')
    test->      , to_char(float '123.123', 'FMS9999990.099999');
     to_char | to_char | to_char  
    ---------+---------+----------
     +0.123  | +123.0  | +123.123
    (1 row)
    

    添加的FM 修饰符代表“填充模式”,并抑制无关紧要的尾随零(除非由0 符号而不是9 强制)和填充空白。

    在句点前后添加尽可能多的9s,以允许尽可能多的数字。

    您几乎可以以任何方式定制所需的输出格式。 Details in the manual here.

    旁白:有比LIMIT :pagesize OFFSET :starts更有效的分页解决方案:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2021-07-19
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多