xml - 使用 UPDATEXML 更新 Oracle 中的 XML

标签 xml oracle xpath sql-update

我有一个像这样的 XML 文档,我必须用新文本更新 开始时间 的值。如何使用 UPDATEXML 函数执行此操作,即 XPath 表达式是什么?

<dok>
    <dataSet>
        <foo>bla bla</foo>
        <field>START_DATE</field>
        <label>The time of begin</label>
    </dataSet>
    <dataSet>
        <bar>bla bla</bar>
        <label>The time of end</label>
        <field>END_DATE</field>
    </dataSet>
</dok>

我的第一个想法是这样的:

UPDATE MY_TABLE SET 
XML_COLUMN = UPDATEXML(XML_COLUMN, '/dok/dataSet/field/text()="START_DATE"/../label/text()', 'The date of start');

我不喜欢使用像following-sibling这样的轴,因为在dataSet中您可能有各种其他顺序未知的元素。

规则应类似于:更新“dataSet”处的“label”,其中“field”= 'START_DATE'

最佳答案

要限定像 field 这样的元素(例如,仅选择具有特定文本内容的元素),请使用尖括号。另外,在我看来,该函数称为 UPDATEXML,而不是 XMLUPDATE(请参阅 this page )。

尝试以下操作:

UPDATE MY_TABLE SET XML_COLUMN =
   UPDATEXML(XML_COLUMN,
   '/dok/dataSet[field = "START_DATE"]/label/text()','The date of start');

注意:我熟悉 XPath,而不是 SQL。但据我所知,上面可能仍然缺少一个 WHERE 子句。

关于xml - 使用 UPDATEXML 更新 Oracle 中的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25580719/

相关文章:

java - 如何从 *.properties 和 build.xml 文件导入?

java - 无法在 Glassfish3 上使用 JDBC 连接到数据库

java - 运行 XSL 转换 oracle db,而不是 java 应用程序

java - 如何编辑最初从 .java 源以 XML 创建的 TextView 的内容?

xml - 将参数值传递给 SSRS 2008 中的数据集参数

mysql - 将 XML 导入 phpmyadmin 数据库

sql - 为什么 oracle 过程无效

java - 如何修改多个XML标签的值?

c# - Xpath 无法解析 XML : Namespace manager or XsltContext needed

datetime - Xpath 中的循环时间