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

SQL Server XQuery trả về lỗi

Biểu thức XPath của bạn có thể dẫn đến nhiều hàng được trả về, cho mỗi hàng trong bảng SQL Server. Bạn sẽ cần sử dụng CROSS APPLY và một cuộc gọi đến .nodes() để có được thông tin mà bạn đang theo dõi:

WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume' AS ns)
SELECT 
    JobCandidateID,
    ResNames.value('(ns:Name.First)[1]', 'nvarchar(100)')
FROM   
    HumanResources.JobCandidate
CROSS APPLY
    [Resume].nodes('/ns:Resume/ns:Name') AS XTbl(ResNames)

Điều đó sẽ trả về tất cả JobCandidateID giá trị và tất cả các tên được xác định trong Resume Cột XML cho mỗi hàng trong bảng.

Nếu bạn có thể chắc chắn rằng sẽ chỉ có một <name> duy nhất trong cột XML của bạn, sau đó bạn cũng có thể rút ngắn thẻ này thành:

WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume' AS ns)
SELECT 
    JobCandidateID,
    [Resume].value('(/ns:Resume/ns:Name/ns:Name.First)[1]', 'nvarchar(100)')
FROM   
    HumanResources.JobCandidate



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để sử dụng tệp .db trong SQL server 2008?

  2. Thay thế các ô trống bằng các giá trị NULL trong một số lượng lớn các cột

  3. So sánh chuỗi SQL, toán tử lớn hơn và nhỏ hơn

  4. Cách gửi kết quả truy vấn qua email trong SQL Server (T-SQL)

  5. Cách xóa khoảng trắng theo sau trong SQL Server - RTRIM ()