我们说我有这个xml -
<book>
<author>Gambardella, Matthew</author>
<title>XML Developers Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book>
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
<book>
<author>Corets, Eva</author>
<title>Maeve Ascendant</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-11-17</publish_date>
<description>After the collapse of a nanotechnology
society in England, the young survivors lay the
foundation for a new society.</description>
</book>
我需要一个T-SQL查询一次从这个列表中选择一本书,因为在将它插入表之前我需要对它进行某种处理。
我想说我想选择此列表中的第二个元素,并希望将其显示为表格。
我该怎么做?
答案 0 :(得分:0)
就个人而言,我会先将整个XML文档粉碎成表格,如果我真的不能对它们进行基于集合的操作,则使用行号,循环或游标等方法迭代表格。 / p>
如果您只是明确要访问xml文档的第n个成员,则可以在编写xpath表达式时执行此操作。你怎么知道你需要迭代多少元素,我不确定。这是一个抓住第二本书节点的例子:
--Assumes you've assigned the XML document you provided to an XML variable called @xml
select t.c.value('author[1]', 'varchar(50)')
from @xml.nodes('/book[2]') as t(c)