将前导零附加到字段

时间:2019-01-03 16:15:18

标签: sql postgresql

当整数的长度小于7位时,我想附加前导零。如果整数的长度大于或等于7位数字,则应返回实际的整数。我已经尝试过下面的sql

select to_char(123456, 'fm0000000');
to_char 
---------
0123456
(1 row)

当数字位数> 7时,它在字符串下方返回

select to_char(12345678, 'fm0000000');
to_char 
---------
#######
(1 row)

当位数大于7时,如何获得确切的整数?预先感谢

2 个答案:

答案 0 :(得分:3)

您可以使用lpad()

select (case when len(123412345::text) >= 8 then 123412345::text
             else lpad(123412345::text, 8, '0')
        end)

答案 1 :(得分:2)

使用lpad函数和CASE语句:

select
  case
    when length(123456::text) < 7 then lpad(123456::text, 7, '0')
    else 123456::text
  end;