XMLTable-xpath';空();Oracle 10g中的替代方案
在Oracle 11中,我有这样一个查询:XMLTable-xpath';空();Oracle 10g中的替代方案,xml,xpath,plsql,xml-parsing,oracle10g,Xml,Xpath,Plsql,Xml Parsing,Oracle10g,在Oracle 11中,我有这样一个查询: SELECT XML_TABLE.* FROM XML_DATA, XMLTABLE('//root' PASSING XML_DATA.XML COLUMNS NAME VARCHAR2 (50) PATH '//root/name/text()', HAS_DOCUMENT NUMBER PATH 'empty(//root/document)') XML_TABLE
SELECT XML_TABLE.*
FROM XML_DATA,
XMLTABLE('//root' PASSING XML_DATA.XML COLUMNS
NAME VARCHAR2 (50) PATH '//root/name/text()',
HAS_DOCUMENT NUMBER PATH 'empty(//root/document)') XML_TABLE
但是XPATH“empty(//root/document)”在10g数据库中不起作用
替代方案是什么?我尝试使用“count(//root/document)”(XPATH 1.0支持),但也不起作用
提前谢谢。我做了一个变通办法
XML:
我承认这并不漂亮。但它奏效了
<root>
<name>text</name>
<document id="1">
<other_tags></other_tags>
</document>
</root>
SELECT XML_TABLE.NAME,
DECODE (XML_TABLE.FIRST_ID, NULL, 0, 1) AS HAS_DOCUMENT
FROM XML_DATA,
XMLTABLE('//root' PASSING XML_DATA.XML COLUMNS
NAME VARCHAR2 (50) PATH '//root/name/text()',
FIRST_ID NUMBER PATH '//root/document[position()=1]/@id') XML_TABLE