sql - 如何在oracle中提取或更新xml属性值

标签 sql xml oracle xpath

表名:conn_details 我有这个 xml,它存储在 Oracle 的 CLOB 列(conn_param)中。

<Parameters>
   <Parameter Name="USER" Value="my_user"/>
   <Parameter Name="PASSWORD" Value="my_password"/>
   <Parameter Name="HOST" Value="google.com"/>
</Parameters>

我正在寻找将获取值或更新值的简单 SQL 查询。

例如: 我想获得一个 HOST 值,结果将是:google.com 我想用值 my_new_password 更新属性 PASSWORD,结果将是:

<Parameters>
   <Parameter Name="USER" Value="my_user"/>
   <Parameter Name="PASSWORD" Value="my_new_password"/>
   <Parameter Name="HOST" Value="google.com"/>
</Parameters>

所以,我正在寻找一些简单的东西,我将提供某种 XPath 来满足我的需求。

最佳答案

要获取相关值,请使用此 SQL:

SELECT extract(xmltype(conn_param), '/Parameters/Parameter[@Name="HOST"]/@Value') 
  FROM conn_details;

要更新 xml 值,请使用此 SQL:

UPDATE conn_details SET conn_param =   UPDATEXML(xmltype(conn_param),
   '/Parameters/Parameter[@Name="HOST"]/@Value',to_char('google.com')).getClobVal()

关于sql - 如何在oracle中提取或更新xml属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30151325/

相关文章:

sql - 在 SQL SERVER 中显示同一表中的行之间的差异

SQL Server 2005 表假脱机(Lazy spool)——性能

asp.net - 如何在 web.config 文件中包含 &/&

oracle - SSIS 2008 Excel 目标连接错误 - 0x80040E37

sql - 如何获取新插入或已经存在的记录的标识值?

sql - Derby - 约束

xml - XSLT 新行插入不能按预期与 Hive 一起工作

java - 类内的 Xstream 类

sql-server - Oracle 的 SSMS 模拟是什么?

oracle - 如何使用 pl/sql 按周汇总记录?