MSSQL 2012:使用变量删除XML属性

时间:2016-06-09 14:15:00

标签: sql-server xml xquery xml-dml

下午好,

我想使用TSQL变量删除XML属性。这是一个最小的工作示例(TSQL代码):

<recipe>
  <parameters>
    <parameter name="a">ValueA</parameter>
    <parameter name="b">ValueB</parameter>
    <parameter name="c">ValueC</parameter>
  </parameters>
</recipe>

这给出了所需的输出:所有属性&#34; desc&#34;已删除:

DECLARE @attr NVARCHAR(MAX) = N'desc';

但是,我想定义一个TSQL变量

name,v1,v2,v3,v4,v5
as,"10,12,15",21,"12,11,10,12",5,7
bs,"11,15,16",24,"19,15,18,23",9,3

如何将此传递给XQuery修改操作?我可以在XML DML中使用 sql:variable(&#34; @ attr&#34;),但是如何使用它来处理属性?

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

指定属性时可以使用通配符,然后检查谓词中属性的名称。

SET @xml.[modify](
  'delete(/recipe/parameters/parameter/@*[local-name() = sql:variable("@attr")])');