作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我需要从存储在 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/
我是一名优秀的程序员,十分优秀!