【发布时间】:2011-02-07 00:19:55
【问题描述】:
我有一个 xml 列,其中包含如下数据:
<AuthorList CompleteYN="Y">
<Author ValidYN="Y">
<LastName>Alió</LastName>
<ForeName>J L</ForeName>
<Initials>JL</Initials>
</Author>
<Author ValidYN="Y">
<LastName>Ortiz</LastName>
<ForeName>D</ForeName>
<Initials>D</Initials>
</Author>
<Author ValidYN="Y">
<LastName>Muftuoglu</LastName>
<ForeName>O</ForeName>
<Initials>O</Initials>
</Author>
<Author ValidYN="Y">
<LastName>Garcia</LastName>
<ForeName>M J</ForeName>
<Initials>MJ</Initials>
</Author>
</AuthorList>
作者的数量是可变的。提取第一作者等我没有问题:
SELECT
ID,
AuthorList.value('(Author/ForeName)[1]', 'varchar(max)') as ForeName,
AuthorList.value('(Author/LastName)[1]', 'varchar(max)') as LastName,
AuthorList.value('(Author/Initials)[1]', 'varchar(max)') as Initials
FROM
XMLs CROSS APPLY
xml.nodes('//AuthorList') AS AuthorList(AuthorList)
我只是好奇如何“动态”实现这样的目标:
1 J L Alió JL 1 D 奥尔蒂斯 D 1 O 穆夫托奥卢 O 1 M J 加西亚 MJ
谢谢!
【问题讨论】: