DB2 SQL如何将一列拆分为可能的许多行?

问题描述 投票:0回答:1

我有一个包含2个字段(ID和配置文件)的表。

表有很多记录,但按ID唯一。配置文件的长度为1000个字符,每个10个字符基本上是一个配置文件代码。一些ID可能只有1个代码,而其他ID有很多。

我不知道为什么桌子是这样设计的。

所以一条记录可能看起来像:

ID              PROFILE
BOB             BM        BS        DM        FM        IC        IC6       IL        IM        JN101     MM        XC        XM        XR
BILL            ZZ        XY               

有没有一种方法可以拆分配置文件字段,创建新行

它看起来像:

ID              PROFILE
BOB             BM
BOB             BS
BOB             DM
...
BILL            ZZ
BILL            XY

我真的很想能够以某种方式创建一个视图。

sql db2
1个回答
0
投票

假定ID不包含空格,并从here借用分隔符拆分查询,将拆分字符更改为空格并过滤出空的概要文件值,可以使用XMLTABLE()查询来进行; >

SELECT sd.ID, si.item as PROFILE
  from TEST sd
      ,XMLTABLE('$doc/items/item'
          PASSING XMLPARSE(DOCUMENT CAST(   '<items><item>'
                                         || replace(sd.PROFILE , ' ' , '</item><item>')
                                         || '</item></items>' as CLOB
                                        )
                           ) as "doc"
          COLUMNS
          ITEM VARCHAR(255) PATH '.'
      ) si 
WHERE si.item <> ''

A DBfiddle to test with

© www.soinside.com 2019 - 2024. All rights reserved.