删除attribute = variable的节点

时间:2013-03-15 12:57:29

标签: tsql variables xquery

我需要一些帮助 - 如何从无类型的XML字段中删除一个节点,其中该属性等于sql变量?

这就是我的尝试:

DECLARE @AttributeKey varchar(500) = 'TestColorBox1';

UPDATE
    Numbers
SET
    AttributeKeyValues.modify('delete (/attributes/attribute[@key="{sql:variable("@AttributeKey")"]}/*')
WHERE
    AccountId = 2000046

    SELECT * FROM Numbers

PS。对不起,如果问题含糊不清,我昨天开始使用xquery。我已经读过你将sql变量定义为

"sql:variable("@variableName")"

错误:

  Msg 9303, Level 16, State 1, Line 6
    XQuery [Numbers.AttributeKeyValues.modify()]: Syntax error near '@', expected ']'.

更新

让它运行没有错误:仍然没有删除我需要删除的节点

DECLARE @AttributeKey varchar(500) = 'TestColorBox1';

UPDATE
    Numbers
SET
    AttributeKeyValues.modify('delete (/attributes/attribute[@key="{sql:variable("@AttributeKey")}"])')
WHERE
    AccountId = 2000046

    SELECT * FROM Numbers

另一个更新:使用的XML

<attributes>
  <attribute key="TestColorBox1">TEST1</attribute> <!-- Targeted Field -->
  <attribute key="test2345">TEST2</attribute>
  <attribute key="test23454">TEST3</attribute>
  <attribute key="test24568798">TEST4</attribute>
  <attribute key="TEST123214124124">TEST5</attribute>
</attributes>

1 个答案:

答案 0 :(得分:1)

删除attributeattributes节点,其中属性@key等于局部变量@AttributeKey的值

modify('delete /attributes/attribute[@key = sql:variable("@AttributeKey")]')