【发布时间】:2021-05-07 02:11:41
【问题描述】:
我有
INSERT INTO [PubMed.Author] (pmid, ValidYN, LastName, FirstName, ForeName, Suffix, Initials, Affiliation)
SELECT
pmid,
nref.value('@ValidYN', 'varchar(max)') ValidYN,
nref.value('LastName[1]', 'varchar(max)') LastName,
nref.value('FirstName[1]', 'varchar(max)') FirstName,
nref.value('ForeName[1]', 'varchar(max)') ForeName,
nref.value('Suffix[1]', 'varchar(max)') Suffix,
nref.value('Initials[1]', 'varchar(max)') Initials,
nref.value('Affiliation[1]', 'varchar(max)') Affiliation
FROM
[Publication.PubMed.XML]
CROSS APPLY
XMLData.nodes('//AuthorList/Author') AS R(nref)
WHERE
pmid = @pmid
当 PubMed 只列出一个附属机构时,它曾经工作得很好
<Author ValidYN="Y">
<LastName>Smith</LastName>
<ForeName>John</ForeName>
<Initials>J</Initials>
<Affiliation>Department of Medicine, XYZ, NY USA; The Stony Brook Cancer Center, Stony Brook, NY
11794, USA.</Affiliation>
</Author>
但是它已经将 Affiliation 更改为多节点
<Author ValidYN="Y">
<LastName>Smith</LastName>
<ForeName>John</ForeName>
<Initials>J</Initials>
<AffiliationInfo>
<Affiliation>Department of Medicine, XYZ, NY USA; </Affiliation>
</AffiliationInfo>
<AffiliationInfo>
<Affiliation>The Stony Brook Cancer Center, Stony Brook, NY 11794, USA.</Affiliation>
</AffiliationInfo>
</Author>
我的问题是如何更改我的代码以连接所有从属关系并将其添加到我的插入中?
【问题讨论】:
-
当您说
concatenate时,您觉得怎么样?单个值,每个值之间有逗号,还有别的吗? -
单个值 - 是但不是逗号,因为这将在附属字符串中,但可能是双栏 ||它们之间,因此可以将其保存到单个字段中,但如果需要,将来会分开。
标签: xml sql-server-2016