小编Sel*_*y S的帖子

如果它是数字则修剪前导零,如果是字母数字则修剪前缀为零

在列中,有以"0"开头的数字和字母数字值.如果它是数字,如何修剪前导零,如果它是Oracle中的字母数字,则不应修剪零.

我需要在WHERE Con​​dition中使用它.

防爆.

000012345应该是12345. 012321应该是12321. 00012JY12应该是00012JY12.

这是我试过的:

    SELECT COUNT(*)
    FROM <TABLE 1> ONN, <TABLE 2> SV
   WHERE SV.CSA_SHP_VISIT_STG_SEQ_ID=ONN.CSA_SHOP_VIST_SEQ_ID
    AND EXISTS (SELECT '1' FROM  <TABLE 3> TMP 
    WHERE TRIM(SV.WORK_ORDER_NUM) = TRIM(TMP.WORK_ORDER_NUM)
    AND PLANT IN ('EMA')
    AND regexp_replace(TRIM(ONN.INSTLD_PART), '^0+([[:digit:]]+)$', 
   '\1')=TRIM(TMP.INSTLD_PART)  AND
  TRIM(ONN.INSTLD_PART_SERIAL_NUM)=TRIM(TMP.INSTLD_PART_SERIAL_NUM) AND      
    nvl(to_number(TRIM(ONN.INSTLD_PART_CSN)),0)=
    nvl(to_number(TRIM(TMP.INSTLD_PART_CSN)),0)
    and REGEXP_LIKE(tmp.INSTLD_PART_CSN, '^-?\d+(\.\d+)?$'))
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle11g leading-zero character-trimming

1
推荐指数
1
解决办法
544
查看次数