小编Kev*_*ber的帖子

如何用XQuery替换*all*匹配元素的属性值?

我正在努力创建一个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;
Run Code Online (Sandbox Code Playgroud)

运行此命令会得到以下结果 - 只有Phoenix Cardinals的第一个实例已被更改.

<FootballApparel>
  <Item Team="Arizona Cardinals" Type="Hat" Cost="$14.99" />
  <Item Team="Indianapolis Colts" Type="Hat" Cost="$14.99" …
Run Code Online (Sandbox Code Playgroud)

xquery sql-server-2005

3
推荐指数
1
解决办法
3883
查看次数

标签 统计

sql-server-2005 ×1

xquery ×1