表名: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()