Làm cách nào để tìm thứ tự các nút trong tài liệu XML?Tìm thứ tự nút trong tài liệu XML trong SQL Server
gì tôi có là một tài liệu như thế này:
<value code="1">
<value code="11">
<value code="111"/>
</value>
<value code="12">
<value code="121">
<value code="1211"/>
<value code="1212"/>
</value>
</value>
</value>
và tôi đang cố gắng để có được điều này vào một bảng được định nghĩa như
CREATE TABLE values(
code int,
parent_code int,
ord int
)
Bảo tồn thứ tự của các giá trị từ XML tài liệu (chúng không thể được sắp xếp theo mã của chúng). Tôi muốn để có thể nói
SELECT code
FROM values
WHERE parent_code = 121
ORDER BY ord
và kết quả nên, tất định, hãy
code
1211
1212
Tôi đã thử
SELECT
value.value('@code', 'varchar(20)') code,
value.value('../@code', 'varchar(20)') parent,
value.value('position()', 'int')
FROM @xml.nodes('/root//value') n(value)
ORDER BY code desc
Nhưng nó không chấp nhận position()
chức năng (' position()
'chỉ có thể được sử dụng trong bộ chọn biến vị ngữ hoặc XPath).
Tôi đoán có thể có cách nào đó, nhưng làm cách nào?
Bạn có chiều sâu hữu hạn các nút? Nếu không, nó sẽ là một nỗi đau. Và để xác nhận: bạn không thể dựa vào mã? – gbn
... và bạn muốn sản lượng nào từ xml? – gbn
Tôi đã cập nhật câu hỏi để cung cấp thêm thông tin. Và không, có chiều sâu vô hạn. – erikkallen