1

我正在使用 SQL Server 并拥有带有 XML 列的表。我的插入程序具有输入参数 XML 文档。有什么办法可以更新表中已经存在的 XML?

这是我表中的旧 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。我知道我必须以某种方式通过我的旧 XML,我想我可以用 ...while(exist) 和修改来做到这一点,但是如何从我的新 XML 中读取我需要的值,如何读取假设是 9 月 19 日的数据,并在旧 XML 中更新 9 月 19 日,然后读取 9 月 20 日的数据,然后在旧 XML 等中更新 9 月 20 日等...?

感谢帮助...

4

1 回答 1

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
于 2013-09-19T20:01:24.293 回答