0

我有一个奇怪的场景,我有 2 个包含以下类型数据的表,

table1: 
key1, xmldata1


    1,<start><dat1>hi/dat1><dat2>hello</dat2>........</end>
    2,<start><dat1>hihi/dat1><dat2>hellohello</dat2>.......</end>

table2:
key1, fld1, name1

    1, dat1, message1
    2, dat1, message2
    2, dat2, message3

我需要生成一个输出,以便使用 key1 连接表和 table2 中的列 fld1,我应该连接与 table1 中 xmldata1 中的标记名称匹配的值。例如:- 输出应该是

1, message1=hi
2, message2=hihi
2, message3=hellohello

这甚至可能吗?table1 xmldata1 中的 dat1、dat2、dat3 标签是动态的,可以有“n”个 dat 标签。

4

1 回答 1

0

对的,这是可能的 ...

select T2.key1, T2.name1, xmlcast(T1.xmldata1.extract('/start/'||T2.fld1) as varchar2(4000)) as message
from table2 T2
    join table1 T1
        on T1.key1 = T2.key1
;

或者

select T2.key1, T2.name1, extractvalue(T1.xmldata1, '/start/'||T2.fld1) as message
from table2 T2
    join table1 T1
        on T1.key1 = T2.key1
;
于 2014-10-02T11:50:37.893 回答