我在LOB(大对象)列中有一些XML内容(小于2000字节)。我使用dbms_lob_substr(messagebody)
来获取实际的XML内容,但我需要获取特定节点的确切值。
例如
<first name>xyz</first name>
<last name>abcd</last name>
我需要说<first name>
的值。我怎样才能做到这一点?
答案 0 :(得分:1)
您的XML似乎缺少根节点?如果您的XML数据与显示它一样,那么如果将其放在虚拟根节点中,则可以使用XMLTable()函数来解析它,例如:
select x.firstname
from mytable,
xmltable(
'/rootnode'
passing xmltype('<rootnode>'||myclobcol||'</rootnode>')
columns
firstname varchar2(100) path 'firstname'
) x
如果您需要同时获取多个值,只需添加到columns子句:
select x.*
from mytable,
xmltable(
'/rootnode'
passing xmltype('<rootnode>'||myclobcol||'</rootnode>')
columns
firstname varchar2(100) path 'firstname',
lastname varchar2(100) path 'lastname',
middleini varchar2(10) path 'middleinitial'
) x