我试图按照这个论坛中找到的示例进行操作,但每次尝试都失败了我有一个包含 3 个列的表:id (int), xml_badm (xml) and idsito (int)
我必须根据指定值更新记录中的一个节点,idsite
这里是要更新的 xml 数据的子集:
<ROOT>
<NEP>
<VALUE>3.9</VALUE>
<NEP_UNC>0.5</NEP_UNC>
<NEP_YEAR_START>2009</NEP_YEAR_START>
<POLICY>
<VALUE>Public</VALUE>
<YEAR>2009</YEAR>
</POLICY>
<NEP_YEAR_END>2009</NEP_YEAR_END>
<NEP_METHOD>"Sampling"</NEP_METHOD>
</NEP>
<NEP>
<VALUE>9.263</VALUE>
<NEP_COMMENT>"Boh?"</NEP_COMMENT>
<NEP_UNC>0.02</NEP_UNC>
<NEP_YEAR_START>2010</NEP_YEAR_START>
<POLICY>
<VALUE>Private</VALUE>
<YEAR>2010</YEAR>
</POLICY>
<NEP_YEAR_END>2010</NEP_YEAR_END>
<NEP_METHOD>"Sampling"</NEP_METHOD>
</NEP>
<Rs>
<VALUE>0.63</VALUE>
<Rs_SIGMA>0</Rs_SIGMA>
<Rs_UNC>0.23</Rs_UNC>
<Rs_TS>23</Rs_TS>
<Rs_SWC>19.12</Rs_SWC>
<Rs_DATE_START>2010</Rs_DATE_START>
<POLICY>
<VALUE>Private</VALUE>
<YEAR>2010</YEAR>
</POLICY>
<Rs_DATE_END>2010</Rs_DATE_END>
</Rs>
</ROOT>
我想在 2010 年将 POLICY->VALUE 设置为 Public,我尝试执行以下查询:
UPDATE tcdc.dbo.BADM_Xml
SET xml_badm.modify('replace value of (/ROOT/NEP/POLICY/VALUE/text())[1] with "Public"')
WHERE xml_badm.value('(/ROOT/NEP/POLICY/YEAR)[1]','varchar(50)') = '2010' and idsito=438
正如我所说,没有发生任何变化:错误在哪里?提前谢谢