【问题标题】:How to format a numeric value in Postgresql如何在 Postgresql 中格式化数值
【发布时间】:2021-09-30 16:53:03
【问题描述】:

我有一组代码可以生成如下所示的数字

SELECT MAX(RIGHT ("node_id",3)::numeric) + 1 as newnum from sewers.structures
    WHERE(
    ST_WITHIN(
        ST_CENTROID((ST_SetSRID(structures.geom, 4326))), 
        ST_SetSRID((SELECT geom FROM sewers."Qrtr_Qrtr_Sections" WHERE "plat_page" = '510A'),4326)) ) and "node_id" != 'PRIVATE' and "node_id" !='PRIV_SAN' and "node_id" !='PRIV_STORM'
    

当我运行它时,它会根据之前放置的值生成一个数字。输出将是一个最多为 3 位的数字。我想得到一个小于三位数的输出,并将其强制转换为 3 位数格式。

例如,如果我生成数字93,我想将其格式化为093。对于像2 这样的单个数字也一样,我希望它的格式为002 等等。但是,如果它生成一个 3 位数字,我希望它保持相同的格式,所以 121 保持为 121

【问题讨论】:

    标签: sql postgresql postgis pgadmin


    【解决方案1】:

    由于输出将是一个字符串,您可以使用to_char,格式为三个0

    select to_char(1,'000');
     to_char
    ---------
      001
    (1 row)
    

    【讨论】:

      【解决方案2】:

      如果我的问题没有错,您正在寻找lpad()

      WITH j (x) AS (
        VALUES (2),(121),(93)
      )
      SELECT lpad(x::text,3,'0') FROM j;
      
       lpad 
      ------
       002
       121
       093
      (3 rows)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-06
        相关资源
        最近更新 更多