私は次のものを持っています:
declare @xml XML
SET @xml = '<record priref="2" creation="2009-12-14T10:39:04">
<field tag="aa" occ="1" lang="nl-NL">somedata</field>
<field tag="bb" occ="1" lang="en-US">somedata</field>
<field tag="bb" occ="2" lang="en-US">somedata</field>
<field tag="cc" occ="1">testdata</field>
<field tag="dd" occ="1">testdata</field>
<field tag="ee" occ="1" lang="nl-NL">somedata</field>
<field tag="ee" occ="1" lang="en-US">somedata</field>
</record>'
DECLARE @nodeCount int
DECLARE @i int
SET @i = 1
SELECT @nodeCount = @xml.value('count(/record/field/@lang)','varchar(5)')
WHILE (@i <= @nodeCount)
BEGIN
Set @xml.modify('replace value of (/record/field/@lang)[.="en-US"][1] with "nl-NL"')
SET @i = @i + 1
END
SELECT @xml
属性@langを条件付きで更新したいと思います。
'tag'と'occ'に同じ属性値の組み合わせを持つノードがある場合(tag = eeなど)、@langの属性値は変更されないままである必要があります。
その他の場合は、上記のクエリがすでに実行しているように変更する必要があります。「en-US」を「nl-NL」に変更します。
誰かがこれを行う方法を知っていますか?前もって感謝します!