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

Nhận vị trí của phần tử xml trong SQL Server 2012

Bạn có thể sử dụng một số kiến ​​thức nội bộ về cách SQL Server triển khai việc chia nhỏ XML và sử dụng row_number() như thế này.

declare @XML xml = 
'<Rows>
   <Row>Coating</Row>
   <Row>Drying</Row>
   <Row>Waxing</Row>
</Rows>'

select T.X.value('text()[1]', 'nvarchar(100)') as RowLabel,
       row_number() over(order by T.X) as RowNumber
from @XML.nodes('/Rows/Row') as T(X)

Tham khảo: Nhận dạng duy nhất các mã XML với DENSE_RANK

Hoặc bạn có thể "chơi an toàn" và sử dụng bảng số.

select T.X.value('text()[1]', 'nvarchar(100)') as RowLabel,
       N.Number as RowNumber
from Numbers as N
  cross apply @XML.nodes('/Rows/Row[sql:column("N.Number")]') as T(X)
where N.Number between 1 and @XML.value('count(/Rows/Row)', 'int')



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng Excel để tạo tệp CSV với các ký tự đặc biệt, sau đó Nhập tệp đó vào db bằng SSIS

  2. Truy vấn phân cấp trong SQL Server 2005

  3. Truy vấn SQL - Nhận bản sửa đổi gần đây nhất

  4. Thỉnh thoảng nhận được SqlException:Hết thời gian chờ

  5. Trải nghiệm khi nào nên sử dụng TỐI ƯU HÓA CHO BỎ LỠ