Uw XPath-expressie kan ertoe leiden dat meerdere rijen worden geretourneerd voor elke rij in de SQL Server-tabel. U moet een CROSS APPLY
. gebruiken en een aanroep naar .nodes()
om die informatie te krijgen die u zoekt:
WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume' AS ns)
SELECT
JobCandidateID,
ResNames.value('(ns:Name.First)[1]', 'nvarchar(100)')
FROM
HumanResources.JobCandidate
CROSS APPLY
[Resume].nodes('/ns:Resume/ns:Name') AS XTbl(ResNames)
Dat zou alle JobCandidateID
. moeten teruggeven waarden en alle voornamen gedefinieerd in de Resume
XML-kolom voor elke rij in de tabel.
Als je er zeker van kunt zijn dat er maar één <name>
zal zijn tag in uw XML-kolom, dan kunt u dit ook inkorten tot:
WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume' AS ns)
SELECT
JobCandidateID,
[Resume].value('(/ns:Resume/ns:Name/ns:Name.First)[1]', 'nvarchar(100)')
FROM
HumanResources.JobCandidate