<Location>
. से आप कौन सी विशेषता या तत्व निकालना चाहते हैं? नोड्स ?? आप संपूर्ण XML नोड को bigint
. में नहीं बदल सकते (जैसा कि आपकी क्वेरी करने का प्रयास करती है....)
क्या आप <Location LaborHours="1.0">
. निकालने का प्रयास करते हैं? मूल्य ??
फिर आपको चाहिए:
;WITH XMLNAMESPACES(DEFAULT 'http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions')
SELECT
XC.value('@LaborHours', 'decimal(18,4)')
FROM
Production.ProductModel
CROSS APPLY
Instructions.nodes('/root/Location') AS XT(XC)
सबसे पहले:चूंकि एकाधिक . हैं <Location>
अपने एक्सएमएल में नोड्स, आपको CROSS APPLY
का उपयोग करना चाहिए और .nodes()
सभी <Location>
प्राप्त करने के लिए कार्य करें एक्सएमएल नोड्स।
दूसरे, चूंकि आप विशेषता . को पुनः प्राप्त करना चाहते हैं LaborHours
(मेरी धारणा), आपको .value('@LaborHours
. का उपयोग करने की आवश्यकता है )` दृष्टिकोण।
और अंत में, चूंकि वे मान 1.0
. हैं या 2.5
, आपको decimal
. का उपयोग करना चाहिए (उचित सटीकता और पैमाने के साथ) उन मानों को प्राप्त करने के लिए - नहीं bigint
....