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

Đọc dữ liệu XML thành các bảng phân cấp

Chúng tôi có thể (ab) sử dụng ROW_NUMBER() để tạo ID bên ngoài XQuery. Mở đầu:

WITH questions AS (
    SELECT
        ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS ID,
        n.q.value('(./questionText)[1]', 'nvarchar(max)') AS questionText,
        n.q.value('(./result)[1]', 'nvarchar(50)') AS result,
        n.q.query('answer') AS answers
    FROM
        @xml.nodes('/quizresult/question') AS n (q)
), questions_and_answers AS (
    SELECT ID, questionText, result, answer.query('.') AS answer
    FROM questions
    CROSS APPLY answers.nodes('answer') AS a(answer)
)

Và bây giờ truy xuất các câu hỏi với

SELECT ID, questionText, result 
FROM questions

Và câu trả lời với

SELECT ID AS questionID,
    q.answer.value('answer[1]', 'nvarchar(max)') AS answer,
    q.answer.value('answer[1]/@number', 'int') AS number,
    q.answer.value('answer[1]/@value', 'int') AS val,
    q.answer.value('answer[1]/@chosen', 'bit') AS chosen
FROM questions_and_answers AS q


  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 để định cấu hình pyodbc để chấp nhận chính xác các chuỗi từ SQL Server bằng freeTDS và unixODBC?

  2. TSQL có trả lại kết quả nhanh hơn thủ tục được lưu trữ trong SQL Server không

  3. làm cách nào để lấy phần thập phân trong sql

  4. Nhóm các mục có phân phối đồng đều trong SQL

  5. Cách sử dụng chỉ mục trong truy vấn SQL