如何在 Postgresql 中格式化数值

问题描述 投票:0回答:2

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

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
2个回答
3
投票

如果我答对了你的问题,那么你正在寻找

lpad()

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

 lpad 
------
 002
 121
 093
(3 rows)

3
投票

由于输出将是一个字符串,因此您可以使用格式为 3

to_char
0

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

FM
前缀将避免用无符号输入向左侧填充空格(请参阅thisthis)。

© www.soinside.com 2019 - 2024. All rights reserved.