I have a SQL using XMLTable to retrieve tag values such as Tag>Value</Tag which works fine. But what about value/condition inside the tag? See following XML with tag T2 having a remove condition = true. How can I retrieve that condition using XMLTable?
<ns:T1> <ns:T2 remove="true"></ns:T2> <ns:T1>
Advertisement
Answer
Pretty much the same way, just use the XPath syntax to match attributes. Leaving out namespaces for the illustration below (to keep it simple):
select * from xmltable( '/' passing xmltype('<T1><T2 remove="true"></T2></T1>') columns remove varchar2(6) path '/T1/T2/@remove') ; REMOVE ------ true
Note that in Oracle SQL there are no boolean values, so you can only retrieve this as a string, not a Boolean. If you need it in a condition, you can’t say where REMOVE
; you will need to write where REMOVE = 'true'