sql >> Databáze >  >> RDS >> Sqlserver

Odstranění více uzlů v jediném XQuery pro SQL Server

I když je odstranění tímto způsobem trochu nepohodlné, můžete místo toho provést aktualizaci a změnit data za předpokladu, že jsou vaše data jednoduchá (jako příklad, který jste uvedli). Následující dotaz v podstatě rozdělí dva řetězce XML do tabulek, spojí je, vyloučí nenulové (odpovídající) hodnoty a převede je zpět na 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
)


  1. Spusťte spouštěč po aktualizaci konkrétních sloupců v MySQL

  2. mohu na to použít pivot?

  3. Získání indexu prvku v kolekci PL/SQL

  4. vnitřní spojení s prázdným výsledkem z pravé tabulky