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

Chọn một nút XML trong SQL Server dựa trên giá trị tối đa của một phần tử con

Làm thế nào về điều này:

SELECT 
    TOP 1
    XMLCOL.value('(/user/name)[1]', 'nvarchar(20)') as 'UserName',
    Usr.Token.value('(id)[1]', 'nvarchar(20)') AS 'ID',
    Usr.Token.value('(endDate)[1]', 'DateTime') as 'EndDate'
FROM 
    dbo.MyTable
CROSS APPLY
    xmlcol.nodes('/user/token') AS Usr(Token)
ORDER BY
    Usr.Token.value('(endDate)[1]', 'DateTime') DESC

Về cơ bản, bạn lấy phần "nguyên tử" như 'Tên người dùng' trực tiếp từ XML, sau đó áp dụng chéo danh sách / người dùng / mã thông báo và trích xuất các bit riêng lẻ mà bạn muốn - bạn nhận được tập hợp kết quả gồm ba cột (Tên người dùng, ID, Ngày kết thúc ) và bạn có thể đặt hàng và lọc chúng.

Lưu ý phụ:thay vì thế này:

XMLCOL.query('user/name').value('.','NVARCHAR(20)') 

tại sao bạn không sử dụng cái này - cảm thấy dễ dàng hơn nhiều!

XMLCOL.value('(/user/name)[1]', 'NVARCHAR(20)') 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Máy chủ SQL trên Linux

  2. Truy vấn SQL để chọn ngày giữa hai ngày

  3. Sử dụng CTE để phân chia kết quả trong ÁP DỤNG CHÉO

  4. Hiểu tầm quan trọng của cài đặt bộ nhớ trong SQL Server

  5. Cách kiểm soát những gì người dùng có thể giải mã Mã hóa khóa đối xứng SQL Server