在CLOB XML DB2上选择

时间:2017-10-12 06:17:30

标签: sql db2

我在DB2中将此数据作为CLOB字段。我正在使用cast:

将数据转换为char
SELECT CAST(CLOBColumn as VARCHAR(32000))
FROM Schema.MyTable;

以下是结果XML如何从上面得出:

<TreeList TreeNo="ABC">
    <Tree ErrorCode="INVALID_TREE" ErrorDescription="Tree doesn’t exist." TreeID="123456"/>
    <Tree ErrorCode="INVALID_TREE" ErrorDescription="Tree doesn’t exist." TreeID="1234567"/>
</TreeList>

这就是我对输出的预期

|TreeNo | TreeID  |   ErrorCode  | ErrorDescription
|ABC    | 123456  | INVALID_TREE | Tree doesn’t exist
|ABC    | 1234567 | INVALID_TREE | Tree doesn’t exist

我如何实现这一目标?

1 个答案:

答案 0 :(得分:3)

您需要使用允许将XML数据映射到表的XMLTABLE function。您可以传入XML类型的数据,如果直接将CLOB解析为XML,它就可以工作。 SELECT看起来如下(你明白了):

SELECT x.*
FROM schema.mytable, XMLTABLE(
    '$CLOBColumn/TreeList'
    COLUMNS 
    TreeNo VARCHAR(10) PATH '@TreeNo',
    TreeID INT PATH 'Tree[@TreeID]',
    ...
) AS x
;