nghĩ rằng tôi muốn tìm kiếm một cách tiếp cận này mà không yêu cầu các WHILE
vòng lặp. Vấn đề chính là trở về một vị trí mục cùng với các nút, nhưng tôi tìm thấy một workaround trong câu trả lời cuối cùng về bài đăng này: http://social.msdn.microsoft.com/Forums/nl/sqlxml/thread/46a7a90d-ebd6-47a9-ac56-c20b72925fb3
Vì vậy, các phương pháp thay thế sẽ là:
insert into mytable ([Word])
select word from (
Select
words.value('@entry','nvarchar(max)') as word,
words.value('1+count(for $a in . return $a/../*[. << $a])', 'int') as Pos
from
OtherTable ot
cross apply ot.XMLColumn.nodes('words/word') x(words)
) sub where Pos <= @j
Về cơ bản các truy vấn trả về nội mỗi từ và vị trí của nó, điều này có thể được lọc bởi truy vấn bên ngoài.
Để tham khảo định nghĩa của tôi về bảng OtherWords
là:
create table OtherTable (XMLColumn xml)
insert OtherTable (XMLColumn)
select '<words><word entry="Wibble"/><word entry="Hello"/><word entry="World"/></words>'
Nguồn
2012-06-14 09:32:29
Không sử dụng dấu ngoặc kép vào tên biến: sql: biến ("@ VariableName") -> sql: biến (@VariableName) – HuRN