有一个XML<Person>
<Node>
<Name>admin</Name>
<Date>2010-4-6</Date>
</Node>
<Node>
<Name>lisi</Name>
<Date>2010-4-6</Date>
</Node>
<Node>
<Name>wangwu</Name>
<Date>2010-4-7</Date>
</Node>
</Person>
实现
显示:第一个姓名:admin 第2个姓名:lisi 最后一个姓名:wangu
只显示一行
sql语句怎么写 谢谢各位!!!
在线等~~~~
<Node>
<Name>admin</Name>
<Date>2010-4-6</Date>
</Node>
<Node>
<Name>lisi</Name>
<Date>2010-4-6</Date>
</Node>
<Node>
<Name>wangwu</Name>
<Date>2010-4-7</Date>
</Node>
</Person>
实现
显示:第一个姓名:admin 第2个姓名:lisi 最后一个姓名:wangu
只显示一行
sql语句怎么写 谢谢各位!!!
在线等~~~~
set @xml='
<Person>
<Node>
<Name>admin</Name>
<Date>2010-4-6</Date>
</Node>
<Node>
<Name>lisi</Name>
<Date>2010-4-6</Date>
</Node>
<Node>
<Name>wangwu</Name>
<Date>2010-4-7</Date>
</Node>
</Person>';with t as
(
SELECT
A.x.value('Name[1]','varchar(10)') Name
FROM @xml.nodes('//Node') AS A(x)
)
select STUFF((select ','+name from t for xml path('')),1,1,'')
/*
admin,lisi,wangwu(1 行受影响)
*/
set @xml='
<Person>
<Node>
<Name>admin</Name>
<Date>2010-4-6</Date>
</Node>
<Node>
<Name>lisi</Name>
<Date>2010-4-6</Date>
</Node>
<Node>
<Name>wangwu</Name>
<Date>2010-4-7</Date>
</Node>
</Person>'
SELECT
A.x.value('(Node/Name)[1]','varchar(10)') Name1,
A.x.value('(Node/Name)[2]','varchar(10)') Name2,
A.x.value('(Node/Name)[3]','varchar(10)') Name3
FROM @xml.nodes('Person') AS A(x)/*
Name1 Name2 Name3
---------- ---------- ----------
admin lisi wangwu(1 行受影响)
*/还是要这样的结果?
A.x.value('(Node/Name)[3]','varchar(10)') Name3
??
A.x.value('(Node/Name)[last()]','varchar(10)') Name3
有空得看看xPath
--last()
SELECT
A.x.value('(Node/Name)[last()]','varchar(10)') Name1
FROM @xml.nodes('Person') AS A(x)
http://topic.csdn.net/u/20090813/17/06951cf3-cd2c-4509-ac0b-9b3bed28ea57.html