Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Usuwanie wielu węzłów w pojedynczym XQuery dla SQL Server

Chociaż usunięcie jest trochę niezręczne, aby zrobić to w ten sposób, możesz zamiast tego dokonać aktualizacji, aby zmienić dane, pod warunkiem, że Twoje dane są proste (takie jak podany przez Ciebie przykład). Następujące zapytanie zasadniczo podzieli dwa ciągi XML na tabele, połączy je, wykluczy wartości inne niż null (pasujące) i przekonwertuje je z powrotem 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcje skalarne ODBC dla daty i godziny w SQL Server (przykłady T-SQL)

  2. Nowy sposób kopiowania plików w SQL Server 2019

  3. Refaktoryzacja ADO.NET - SqlTransaction a TransactionScope

  4. Generuj skrypty — tylko dane — znaleziono cykliczne zależności

  5. Procedura składowana jest powolna w Entity Framework