Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Eliminazione di più nodi in una singola XQuery per SQL Server

Sebbene l'eliminazione sia un po' scomoda da fare in questo modo, puoi invece eseguire un aggiornamento per modificare i dati, a condizione che i tuoi dati siano semplici (come l'esempio che hai fornito). La seguente query dividerà sostanzialmente le due stringhe XML in tabelle, le unirà, escluderà i valori non nulli (corrispondenti) e lo riconverterà in 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
)