Удаление нескольких узлов в одном XQuery для SQL Server
Я имею:
a table with an xml type column (list of IDs) an xml type parameter (also list of IDs)Каков наилучший способ удалить узлы из столбца, которые соответствуют узлам в параметре, оставляя при этом любые несопоставленные узлы нетронутыми?
например
declare @table table (
[column] xml
)
insert @table ([column]) values ('<r><i>1</i><i>2</i><i>3</i></r>')
declare @parameter xml
set @parameter = '<r><i>1</i><i>2</i></r>'
-- this is the problem
update @table set [column].modify('delete (//i *where text() matches @parameter*)')
Документация MSDN указывает, что это должно быть возможно (вВведение в XQuery в SQL Server 2005):
This stored procedure can easily be modified to accept an XML fragment which contains one or more skill elements thereby allowing the user to delete multiple skill nodes with a single invocation of stored procedure.