Ditt XPath-uttryck kan leda till att flera rader returneras för varje rad i SQL Server-tabellen. Du måste använda en CROSS APPLY
och ett anrop till .nodes()
för att få den informationen du är ute efter:
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)
Det borde returnera alla JobCandidateID
värden och alla förnamn definierade i CV
XML-kolumn för varje rad i tabellen.
Om du kan vara säker på att det bara någonsin kommer att finnas en enda
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