2

以下のクエリでは、データベースのテーブル X の Items 列にある xml ノードの値を更新しています。現在、名前属性のみに基づいてフィルタリングしています。同じ名前のノードが複数あるため、更新中にさらに多くの属性をフィルタリングできるようにする必要があります。

UPDATE dbo.Declarations
    SET Items.modify('replace value of 
 (/Items/Item[@Name=(sql:variable("@ItemName"))]/text())[1] 
 with sql:variable("@Value")')
   WHERE DeclarationId = @DeclarationId
END

複数の属性値に基づいて XML ノードを選択し、このノードの値を更新することはできますか?

4

2 に答える 2

0
UPDATE dbo.Declarations
    SET Items.modify('replace value of 
 (/Items/Item[@Name=(sql:variable("@ItemName"))][@Attr=(sql:variable("@newParam"))]/text())[1] 
 with sql:variable("@Value")')
   WHERE DeclarationId = @DeclarationId
END

やるべきです; Attr という名前の属性と @newParam の新しい SQL 変数があると仮定します。

于 2013-10-01T16:29:44.717 に答える