XPath 式により、SQL Server テーブルの各行に対して複数の行が返される可能性があります。 CROSS APPLY
を使用する必要があります そして .nodes()
への呼び出し 目的の情報を取得するには:
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)
それはすべての JobCandidateID
を返すはずです Resume
で定義されている値とすべての名前 テーブルの各行の XML 列。
単一の <name>
しか存在しないことが確実な場合 タグを XML 列に追加した場合、これを次のように短縮することもできます:
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