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 に答える