sql - 在 Oracle SQL 中选择 xpath 值作为单独的行

标签 sql xml oracle xpath xmltype

我需要从存储在 Oracle 数据库的 CLOB 列中的 XML 中选择一些值。 我能想到的最好的是:

select extract(xmltype(COLUMN), 'xpath-expression').getStringVal() as XMLVAL from TABLE t;

问题在于,当 XPATH 选择多个节点时,这些值会被串联起来。我需要将每个选定的节点放在单独的行中。显然,连接必须发生在 getStringVal() 中,我使用它是因为我的客户端中需要有字符串(而不是 XMLType)。我应该使用什么来代替 getStringVal()?

编辑:注意这里有一个类似的问题:Oracle Pl/SQL: Loop through XMLTYPE nodes - 但我无法将其应用到我的案例中。它使用了两个不同的XPATH表达式,分离的原理不明确。

EDIT2:XML 非常复杂,但基本上我需要在中找到“某些值”条目

<string name="SOME_KEY" value="some value"/>

隐藏在许多其他元素之下的元素。我使用 XPATH //*[@name="SOME_KEY"]/@value,它成功地找到了所有具有 SOME_KEY 属性的 XML 元素的值属性。

最佳答案

试试这个。

SELECT EXTRACTVALUE (x.COLUMN_VALUE, 'xpath-expression')
  FROM TABLE (
          SELECT XMLSEQUENCE (
                    xmltype (column).EXTRACT ('xpath-expression'))
            FROM t) x;

sample 在 http://sqlfiddle.com/#!4/87af2/1

关于sql - 在 Oracle SQL 中选择 xpath 值作为单独的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16735885/

相关文章:

jquery - 使用 jQuery.find() 和 XML 文档获取 HTMLUnknownElement

sql-server - Oracle 和 SQL Server 中 NVARCHAR 的区别?

mysql - 何时在 MySQL 中使用单引号、双引号和反引号

sql - Postgresql CASE 语法的问题

java - Java 中 SQL 查询不解析整个表的方法 - JDBC

java - Android:无法解析方法 "query(java.lang.string)"

java - JUnit:无法加载 ApplicationContext(无合格 Bean)。本地没有问题

java - Google map v2 膨胀 XML 时出错

java - 从 Weblogic Server DEQUEUE Oracle 高级队列

sql - 反转存储层次结构的逗号分隔列