如何只检索部分列

时间:2014-08-22 20:11:23

标签: sql ibm-midrange

我有一个问题。在这里的第一个col,RFDTA。这是一个传统的col;它有销售人员姓名,但是在col的末尾它有一个'000000'字符串

我想检索前18个位置,这应该为我删除0000 或者如果有更优雅的方式,请告诉我。但如果没有,我如何只选择RFDTA的前18个?此db是在Crystal报表中使用的db2。实际的len是40。

SELECT                                                                         
  ALL       T02.RFDTA, T01.IDDOCD, T01.IDSLR#, T01.IDPRT#, T01.IDSHP#,   T01.IDORD#,      
            IDSHP#*(IDNTU$) AS "VALUE"                                         
  FROM      ASTDTA.OEINDLID T01 INNER JOIN                                       
            ASTDTA.REFERRF T02                                                 
  ON        T01.IDSLR# = T02.RFSLC                                             
  WHERE     IDPRT# IN ('CMENV', 'CRCMBOX', 'CMPOUCH2', 'RGCHAING', 'RGBOX',    
            'PINBOX', 'PINBOX4', 'CRGBCS1S', 'CRGBC1S', 'CRGBC1M', 'CRGBC1L')  

    AND     RFCAT = '0025'                                                     
    AND     RFDTA <> '000000'                                                  
  ORDER BY  T01.IDSLR# ASC        

2 个答案:

答案 0 :(得分:1)

SUBSTR(T02.RFDTA,1,18)将为您提供前18个字节。

SUBSTR

答案 1 :(得分:0)

如果您想从字符串末尾删除0,但又不知道有多少,那么trim()会有所帮助:

select trim(trailing '0' from T02.RFDTA)