Váš výraz XPath by mohl vést k vrácení více řádků pro každý řádek v tabulce serveru SQL. Budete muset použít CROSS APPLY
a volání .nodes()
k získání informací, které hledáte:
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)
To by mělo vrátit všechny JobCandidateID
hodnoty a všechna křestní jména definovaná v Resume
XML sloupec pro každý řádek v tabulce.
Pokud si můžete být jisti, že vždy bude existovat pouze jeden <name>
ve sloupci XML, můžete to také zkrátit na:
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