请考虑以下XML:
<Employees> <Person> <ID>1000</ID> <Name>Nima</Name> <LName>Agha</LName> </Person> <Person> <ID>1001</ID> <Name>Ligha</Name> <LName>Ligha</LName> </Person> <Person> <ID>1002</ID> <Name>Jigha</Name> <LName>Jigha</LName> </Person> <Person> <ID>1003</ID> <Name>Aba</Name> <LName>Aba</LName> </Person> </Employees>
我想编写一个获取数字的函数,然后获取第n个Person元素,然后Name。例如,如果0传递给我的函数,我返回Aba,如果1传递给我的函数,我返回Jigha。
Person
Name
Aba
Jigha
这应该工作。将@index变量的值设置为要查找的记录数,相对于列表的末尾:
@index
declare @index int = 1 declare @xml xml = '<Employees> <Person> <ID>1000</ID> <Name>Nima</Name> <LName>Agha</LName> </Person> <Person> <ID>1001</ID> <Name>Ligha</Name> <LName>Ligha</LName> </Person> <Person> <ID>1002</ID> <Name>Jigha</Name> <LName>Jigha</LName> </Person> <Person> <ID>1003</ID> <Name>Aba</Name> <LName>Aba</LName> </Person> </Employees>' select t2.person.value('(Name/text())[1]','varchar(50)') from @xml.nodes('Employees/Person[position()=(last()-sql:variable("@index"))]') as t2(person)