【问题标题】:XMLTable - xpath 'empty()' alternative in Oracle 10gXMLTable - Oracle 10g 中的 xpath 'empty()' 替代方案
【发布时间】:2013-04-29 13:33:10
【问题描述】:

在 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

但是 XPATH 'empty(//root/document)' 在 10g 数据库中不起作用。

有什么选择?我尝试使用 'count(//root/document)'(在 XPATH 1.0 中受支持),但也不起作用。

提前致谢。

【问题讨论】:

    标签: xml xpath plsql xml-parsing oracle10g


    【解决方案1】:

    我做了一个解决方法。

    XML:

    <root>
      <name>text</name>
      <document id="1">
        <other_tags></other_tags>
      </document>
    </root>
    

    SQL:

    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
    

    我承认,它并不漂亮。但它奏效了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多