在DB2中提取XML标记的智能方法

z9gpfhce  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(158)

我有这个问题,我知道变通的解决方案,但它不是漂亮的,也许你可以提供一些更聪明的..?
我有一个表,其中一列包含XML内容,如下所示:

bunch of text with tags

<AdrLine> Some address text </AdrLine> 
<AdrLine> More text with address </AdrLine> 
<AdrLine> postal codes etc </AdrLine>

bunch of text with tags

我只需要从这里的地址和我的解决方案是-找到“AdrLine”和“/AdrLine”(与INSTR)计数之间的字符,并从整个字符串减去。
也许有更优雅的方法来解决这个问题?顺便说一句,我们没有正则表达式可供我们(FL 501)。

uwopmtnx

uwopmtnx1#

/*
WITH MYTAB (C) AS 
(
SELECT
'
<doc>
<bunch e="of text with tags"/>
<AdrLine> Some address text </AdrLine> 
<AdrLine> More text with address </AdrLine> 
<AdrLine> postal codes etc </AdrLine>
<bunch e="of text with tags"/>
</doc>
'
FROM SYSIBM.SYSDUMMY1
)

* /

SELECT X.*
FROM 
  MYTAB T
, XMLTABLE
(
  '$D/doc/AdrLine' PASSING XMLPARSE (DOCUMENT T.C) AS "D" 
  COLUMNS 
    LINE VARCHAR (100) PATH '.'
) X;

| 管线|
| - -|
| 一些地址文本|
| 更多带地址的文本|
| 邮政编码等|
上面的示例针对的是表中有xml文档的字符串(LOB或VARCHAR)表示形式的情况。
如果表列C为XML数据类型,则必须使用T.C而不是XMLPARSE (DOCUMENT T.C)

相关问题