Sql 从LOB内容获取部分消息

Sql 从LOB内容获取部分消息,sql,oracle,substring,xml-column,Sql,Oracle,Substring,Xml Column,我在LOB(大对象)列中有一些XML内容(小于2000字节)。我使用了dbms\u lob\u substr(messagebody)来获取实际的XML内容,但我需要获取特定节点的确切值 例如 xyz abcd 我需要say的值。如何实现这一点?您的XML似乎缺少根节点?如果XML数据如您所示,则如果将其放入伪根节点,则可以使用XMLTable()函数对其进行解析,例如: select x.firstname from mytable, xmltable( '/rootnode'

我在LOB(大对象)列中有一些XML内容(小于2000字节)。我使用了
dbms\u lob\u substr(messagebody)
来获取实际的XML内容,但我需要获取特定节点的确切值

例如

xyz
abcd

我需要say
的值。如何实现这一点?

您的XML似乎缺少根节点?如果XML数据如您所示,则如果将其放入伪根节点,则可以使用XMLTable()函数对其进行解析,例如:

select x.firstname
  from mytable,
  xmltable(
   '/rootnode'
   passing xmltype('<rootnode>'||myclobcol||'</rootnode>')
   columns
      firstname varchar2(100) path 'firstname'
  ) x
选择x.firstname
从mytable中,
xmltable(
“/rootnode”
传递xmltype(“”| | myclobcol | |“”)
柱
firstname varchar2(100)路径“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
选择x*
从mytable中,
xmltable(
“/rootnode”
传递xmltype(“”| | myclobcol | |“”)
柱
firstname varchar2(100)路径“firstname”,
lastname varchar2(100)路径“lastname”,
middleini varchar2(10)路径“middleinitial”
)x

它的所有XMl节点。。XYZ..我如何获得特定节点的值,比如说查看我以前的伟大方法..但将另一个标记为正确,因为他首先响应。谢谢大家
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