Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Dapatkan posisi elemen xml di SQL Server 2012

Anda dapat menggunakan beberapa pengetahuan internal tentang bagaimana SQL Server mengimplementasikan XML shredding dan menggunakan row_number() seperti ini.

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)

Ref:Identifikasi Unik Node XML dengan DENSE_RANK

Atau Anda dapat "bermain aman" dan menggunakan tabel angka.

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. Perbarui dengan Gabung, Kelompokkan, dan Memiliki

  2. Menggunakan StringWriter untuk Serialisasi XML

  3. Konversikan DateTime ke Hex yang setara di VB.NET

  4. Tambahkan beberapa kendala dalam satu pernyataan

  5. Menyalin hasil kueri SQL Server ke tabel Access 2010