Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Excluindo vários nós em um único XQuery para SQL Server


Embora a exclusão seja um pouco complicada de fazer dessa maneira, você pode fazer uma atualização para alterar os dados, desde que seus dados sejam simples (como o exemplo que você deu). A consulta a seguir basicamente dividirá as duas strings XML em tabelas, as unirá, excluirá os valores não nulos (correspondentes) e os converterá novamente em XML:
UPDATE @table 
SET [column] = (
    SELECT p.i.value('.','int') AS c
    FROM [column].nodes('//i') AS p(i)
    OUTER APPLY (
        SELECT x.i.value('.','bigint') AS i
        FROM @parameter.nodes('//i') AS x(i)
        WHERE p.i.value('.','bigint') = x.i.value('.','int')
    ) a
    WHERE a.i IS NULL
    FOR XML PATH(''), TYPE
)