如果长度不等于使用sql的10位,则添加前导零

moe*_*moe 5 postgresql netezza

我想加入2个表但我的问题是其中一个表有10位数字,另一个表可能有10个或更少的数字.出于这个原因,我正在丢失一些数据,所以我想做的是首先检查长度,如果长度小于10位,那么我想添加前导零,所以我可以使它成为10位数.我想在加入时这样做,所以我不确定这是否可行.这是一个例子,如果我在TABLE_WITHOUT_LEADING_ZERO中有251458,那么我想改变它:0000251458.这是我到目前为止:

select ACCT_NUM, H.CODE
 FROM TABLE_WITH_LEEDING_ZERO D,  TABLE_WITHOUT_LEADING_ZERO H
 WHERE substring(D.ACCT_NUM from position('.' in D.ACCT_NUM) + 2) = cast (H.CODE as varchar (10))
Run Code Online (Sandbox Code Playgroud)

谢谢

bma*_*bma 15

另一种选择:

SELECT TO_CHAR(12345,'fm0000000000');
  to_char   
------------
 0000012345
Run Code Online (Sandbox Code Playgroud)


Nie*_*ree 7

在Netezza中,您可以使用LPAD:

select lpad(s.sample,10,0) as result
from (select 12345 as sample) s

    result
   -------
  0000012345
Run Code Online (Sandbox Code Playgroud)

但是,删除零会更有效,如下例所示:

select cast(trim(Leading '0' from s.sample) as integer) as result
from (select '0000012345' as sample) s

    result
   -------
    12345
Run Code Online (Sandbox Code Playgroud)