5

我正在尝试加入 2 张桌子,但我的问题是其中一张桌子有 10 位数字,而另一张桌子可能有 10 位或更少的数字。出于这个原因,我丢失了一些数据,所以我想做的是首先检查长度,如果长度小于 10 位,然后我想添加前导零,这样我就可以使它成为 10 位数字。我想在加入时这样做,所以我不确定这是否可能。这是一个示例,如果 ii 在 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))

谢谢

4

2 回答 2

16

另一种选择:

SELECT TO_CHAR(12345,'fm0000000000');
  to_char   
------------
 0000012345
于 2013-11-01T15:29:51.893 回答
7

在 Netezza 中,您可以使用 LPAD:

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

    result
   -------
  0000012345

但是,像下面的示例中那样删除零会更有效:

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

    result
   -------
    12345
于 2013-11-27T05:17:15.610 回答