LOB (Large OBject) 列に XML コンテンツ (2000 バイト未満) があります。以前dbms_lob_substr(messagebody)
は実際の XML コンテンツを取得していましたが、特定のノードの正確な値を取得する必要があります。
例えば。
<first name>xyz</first name>
<last name>abcd</last name>
say の値が必要です<first name>
。どうすればこれを達成できますか?
LOB (Large OBject) 列に XML コンテンツ (2000 バイト未満) があります。以前dbms_lob_substr(messagebody)
は実際の XML コンテンツを取得していましたが、特定のノードの正確な値を取得する必要があります。
例えば。
<first name>xyz</first name>
<last name>abcd</last name>
say の値が必要です<first name>
。どうすればこれを達成できますか?
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