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

Làm thế nào để đọc xml trong t-sql?

Giả sử bạn có XML này trong một biến T-SQL - thì bạn có thể sử dụng đoạn mã này:

DECLARE @input XML = '...(your XML here).....'

SELECT
    Key1 = Item.value('(key)[1]', 'int'),
    Key2 = Item2.value('(key)[1]', 'int'),
    ItemValue = Item2.value('(value)[1]', 'varchar(50)')
FROM 
    @input.nodes('/root/item') AS T(Item)
CROSS APPLY
    item.nodes('value/params/item') AS T2(Item2)

Điều này cho tôi kết quả là:

Key1  Key2  ItemValue
 1     1     value
 1     2     value2
 1     3     value3
 2     4     value4
 2     5     value5
 2     6     value6  

Cách tiếp cận như sau:

  • lấy danh sách <item> các nút dưới <root> là "danh sách các nút XML" đầu tiên của bạn với .nodes() đầu tiên Phương thức XQuery và trích xuất giá trị của <key> Phần tử XML trong phân đoạn XML đó thành Key1

  • lấy danh sách các nút XML "lồng nhau" bên trong phân đoạn XML đó, sử dụng value/params/item XPath, để lấy các hàng con - và trích xuất các giá trị từ <key><value> từ các đoạn XML con lồng nhau đó vào Key2ItemValue




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chọn 10 phần trăm trên cùng, cũng là phần trăm dưới cùng trong SQL Server

  2. Máy chủ SQL bỏ qua trường hợp trong một biểu thức where

  3. Tôi có nên sử dụng! =Hoặc <> cho T-SQL không?

  4. Làm cách nào để in GETDATE () trong SQL Server với thời gian mili giây?

  5. MVC3 - Xác thực bằng tài khoản máy chủ SQL