SQL सर्वर तालिका में प्रत्येक पंक्ति के लिए आपके XPath व्यंजक के कारण अनेक पंक्तियाँ वापस आ सकती हैं। आपको 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