我有一个奇怪的情况,我有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标签是动态的,可以有&#39; n&#39; dat标签。
答案 0 :(得分: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
;