如何使用Modify更新XML

时间:2013-09-19 19:57:32

标签: sql sql-server xml xquery-sql

我正在使用SQL Server并使用Table with XML列。我的插入过程有输入参数XML文档。有什么办法可以更新我表中现有的XML吗?

这是我表中的OLD XML:

 <weather Location="Paris, France">
   <forecast>
     <description>Sky is clear</description>
     <Date>2013-09-19</Date>
     <MinTemp>13</MinTemp>
     <MaxTemp>20</MaxTemp>
     <Humidity>78</Humidity>
     <Pressure>1024</Pressure>
     <Windspeed>3</WindSpeed>
   </forecast>  
   <forecast>
     <description>Sky is clear</description>
     <Date>2013-09-20</Date>
     <MinTemp>14</MinTemp>
     <MaxTemp>21</MaxTemp>
     <Humidity>75</Humidity>
     <Pressure>1020</Pressure>
     <Windspeed>1</WindSpeed>
   </forecast>  .... 10 times this forecast
 </weather>

这是我的新人:

 <weather Location="Paris, France">
   <forecast>
     <description>Sky is clear</description>
     <Date>2013-09-19</Date>
     <MinTemp>14</MinTemp>
     <MaxTemp>21</MaxTemp>
     <Humidity>70</Humidity>
     <Pressure>1000</Pressure>
     <Windspeed>5</WindSpeed>
   </forecast>  
   <forecast>
     <description>Sky is clear</description>
     <Date>2013-09-20</Date>
     <MinTemp>17</MinTemp>
     <MaxTemp>24</MaxTemp>
     <Humidity>68</Humidity>
     <Pressure>1024</Pressure>
     <Windspeed>3</WindSpeed>
   </forecast>  .... 10 times this forecast
 </weather>

我现在想要的是用我从新的XML读取的值来更新我的旧XML。我知道我必须以某种方式通过我的OLD XML,我想我可以用...同时(存在)和修改,但如何从我的新XML读取我需要的值,如何阅读让我们说9月19日的数据,并在旧XML中更新9月19日,然后读取9月20日的数据,然后在旧的XML等等更新9月20日......?

感谢您的帮助...

1 个答案:

答案 0 :(得分:1)

你可以试试这个: -

update tbl1
set myXml.modify('replace value of (/weather/forecast/..)[1] 
                    with concat(string(sql:column("columnname")), "value")')
where myXml.exist('/weather/forecast/..') = 1 //some condition