Bir XML dizesini dB'den [varchar(max)] çekecek, denetleyecek ve belirli bir duruma uyuyorsa güncelleyecek bir SQL betiğine ihtiyacım var.
Xml'imin aşağıdaki biçimde olduğunu düşünün:
<root>
<level1>
<level2>
<level3 />
<level3 />
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="this one is not of interest">
<options>
<option this="that" />
<option me="you" />
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="now is the time for ABC">
<options>
<option this="that" />
<option me="you" />
<option here="now" />
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
</root>
Yani, yapmak istediğim, adı "level6" olan ve değeri "şimdi tam zamanı" ile başlayan "burada"adlı bir özniteliğe sahip olan tüm öğeleri güncellemektir. Yani, bu sadece yukarıdaki iki öğeyle eşleşmelidir.
Ancak, tek seçim kriteri bu değil. Seçenekler listesi şunları içermemelidir <option here="now" />
. Yani, bu bize güncellenecek tek bir öğe bırakmalı.
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
</options>
</level6>
Bu öğeye, eksik olanı eklemek istiyorum <option here="now" />
o yüzden bu olur:
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
<option here="now" />
</options>
</level6>
Yani, nihai sonuç şöyle olmalıdır:
<root>
<level1>
<level2>
<level3 />
<level3 />
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
<option here="now" /> // <- this one new
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="this one is not of interest">
<options>
<option this="that" />
<option me="you" />
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="now is the time for ABC">
<options>
<option this="that" />
<option me="you" />
<option here="now" />
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
</root>
Verileri dB'den bir dizeye okuyabildiğimi ve db'yi nasıl güncelleyeceğimi bildiğimi varsayalım, bu yüzden Sql'deki (SQL Server) xml dizesini gerçekten nasıl değiştirebilirim.