使用iseries sql拆分列

时间:2014-06-23 13:06:57

标签: sql ibm-midrange

我有一个关于iseries(V6R1)的表格,如下所示:

REF                           BOOKING             NAME
--------------------------------------------------------------
032 220 3564                  1354789             Peter Parker
att. Lois                     1156872             Clark Kent
checklist no. 1                864723             Matt Murdoch

我正在尝试将列REF拆分为3个新列,即空格字符的拆分。拆分的结果应该是

REF1          REF2          REF3          BOOKING             NAME
---------------------------------------------------------------------------
032           220           3564          1354789             Peter Parker
att.          Lois                        1156872             Clark Kent
checklist     no.           1              864723             Matt Murdoch

我一直在关注POSSTR,CHARINDEX,SUBSTR,但无法使其发挥作用。将不胜感激。

1 个答案:

答案 0 :(得分:2)

没有一种简单的方法可以做到这一点。以下工作,但将其延伸超过3列将是非常难看。

如果必须经常这样做,请考虑构建一个返回特定事件的UDF。

select ref                                                     
     , substr(ref                                              
             ,1                                                 
             ,locate(' ',ref,1)
             ) as ref1                           
     , substr(ref                                              
              ,locate(' ',ref,1) + 1                           
              ,locate(' ',ref, locate(' ',ref,1) + 1)         
               - locate(' ',ref,1)                             
             ) as ref2                                                 
     , substr(ref                                              
             , locate(' ',ref, locate(' ',ref,1) + 1) + 1     
             ) as ref3                                                 
from mytable