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

Cách chuyển đổi phân cấp lồng nhau của xml sang bảng sql

Còn điều này thì sao (tôi đã khai báo @input trở thành một biến kiểu dữ liệu XML với nội dung XML của bạn - hãy thay thế tương ứng):

SELECT
    Parent.Elm.value('(@ID)[1]', 'int') AS 'ID',
    Parent.Elm.value('(Title)[1]', 'varchar(100)') AS 'Title',
    Parent.Elm.value('(Description)[1]', 'varchar(100)') AS 'Description',
    Child.Elm.value('(@ID)[1]', 'int') AS 'ChildID',
    Child.Elm.value('(Title)[1]', 'varchar(100)') AS 'ChildTitle',
    Child.Elm.value('(StartDate)[1]', 'DATETIME') AS 'StartDate',
    Child.Elm.value('(EndDate)[1]', 'DATETIME') AS 'EndDate'
FROM
    @input.nodes('/ROOT/WrapperElement/ParentElement') AS Parent(Elm)
CROSS APPLY
    Parent.Elm.nodes('ChildElement') AS Child(Elm)

Về cơ bản, bạn lặp lại tất cả /ROOT/WrapperElement/ParentElemet các nút (dưới dạng Parent(Elm) bảng giả) và đối với mỗi mục trong số đó, bạn thực hiện CROSS APPLY cho các phần tử con chứa bên trong ParentElement đó và lấy ra những thông tin cần thiết.

Sẽ hiệu quả - tôi hy vọng!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể so sánh hoặc sắp xếp các loại dữ liệu văn bản, ntext và hình ảnh, ngoại trừ khi sử dụng toán tử IS NULL hoặc LIKE>

  2. Hiểu câu lệnh DROP TABLE trong SQL Server

  3. SQL Server JOIN thiếu giá trị NULL

  4. Chờ kết nối đóng trước khi khôi phục cơ sở dữ liệu SQL Server

  5. CUBE OLAP đa chiều là gì và cho ví dụ về hình khối có nhiều hơn 3 kích thước