表名: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查询,它将得到值或将更新它。
例如:
我想得到一个主机值,结果是: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()

08-26 18:49
查看更多