Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Xóa nhiều nút trong một XQuery cho SQL Server

Mặc dù thao tác xóa hơi khó thực hiện theo cách này, nhưng thay vào đó, bạn có thể thực hiện cập nhật để thay đổi dữ liệu, miễn là dữ liệu của bạn đơn giản (chẳng hạn như ví dụ bạn đã đưa ra). Truy vấn sau về cơ bản sẽ chia hai chuỗi XML thành các bảng, nối chúng, loại trừ các giá trị không phải null (khớp) và chuyển đổi nó trở lại 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. Bế tắc khi CHỌN / CẬP NHẬT

  2. Các hàng đến các giá trị được phân tách bằng dấu phẩy bằng thẻ XML

  3. Trường hợp thích hợp / tiêu đề trong t-sql

  4. máy chủ sql, xóa tầng và bảng cha / con

  5. Cột giống danh tính nhưng dựa trên tiêu chí Nhóm Theo