我正在尝试创建一个 modify() 语句来更改具有该属性值的所有元素中的属性值——到目前为止,我只能让它更改第一个匹配元素中的值。我在下面创建了一个我目前在 SQL Server 2005 中运行的示例:
DECLARE @x XML
SELECT @x = '
<FootballApparel>
<Item Team="Phoenix Cardinals" Type="Hat" Cost="$14.99" />
<Item Team="Indianapolis Colts" Type="Hat" Cost="$14.99" />
<Item Team="Cincinnati Bengals" Type="Hat" Cost="$14.99" />
<Item Team="Phoenix Cardinals" Type="Shirt" Cost="$21.99" />
<Item Team="Indianapolis Colts" Type="Shirt" Cost="$21.99" />
<Item Team="Cincinnati Bengals" Type="Shirt" Cost="$21.99" />
</FootballApparel>
';
SET @x.modify('
replace value of
(/FootballApparel/Item[@Team="Phoenix Cardinals"]/@Team)[1]
with "Arizona Cardinals"
');
SELECT @x;
运行它会得到以下结果——只有 Phoenix Cardinals 的第一个实例已更改。
<FootballApparel>
<Item Team="Arizona Cardinals" Type="Hat" Cost="$14.99" />
<Item Team="Indianapolis Colts" Type="Hat" Cost="$14.99" />
<Item Team="Cincinnati Bengals" Type="Hat" Cost="$14.99" />
<Item Team="Phoenix Cardinals" Type="Shirt" Cost="$21.99" />
<Item Team="Indianapolis Colts" Type="Shirt" Cost="$21.99" />
<Item Team="Cincinnati Bengals" Type="Shirt" Cost="$21.99" />
</FootballApparel>
你能帮我用正确的 modify() 语句来替换所有实例吗?
谢谢!
凯文