Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Suppression de plusieurs nœuds dans un seul XQuery pour SQL Server

Bien que la suppression soit un peu difficile à faire de cette façon, vous pouvez à la place faire une mise à jour pour modifier les données, à condition que vos données soient simples (comme dans l'exemple que vous avez donné). La requête suivante divisera essentiellement les deux chaînes XML en tables, les joindra, exclura les valeurs non nulles (correspondantes) et les reconvertira en 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
)