संग्रह निर्दिष्ट किए बिना, यह मेरे लिए ठीक काम करता है:
DECLARE @X XML
SET @x = N'
<parameters xmlns="http://www.educations.com/Search/Parameters.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<parameter xsi:type="category" categoryID="38" />
</parameters>'
;
WITH XMLNAMESPACES
(
'http://www.educations.com/Search/Parameters.xsd' as p,
'http://www.w3.org/2001/XMLSchema-instance' as xsi
)
SELECT @X.value('(/p:parameters/p:parameter/@xsi:type)[1]','nvarchar(max)')
क्या आप कृपया search.SearchParameters
. की सामग्री पोस्ट कर सकते हैं ?
अपडेट करें:
स्कीमा-बाउंड XML
. पर , यह असंभव प्रतीत होता है।
आप अपने कॉलम को फ़्रीटाइप XML
. में कास्ट कर सकते हैं :
WITH XMLNAMESPACES
(
'http://www.educations.com/Search/Parameters.xsd' as p,
'http://www.w3.org/2001/XMLSchema-instance' as xsi
)
SELECT CAST(@X AS XML).value('(/p:parameters/p:parameter/@xsi:type)[1]','nvarchar(max)')
(लेकिन आप XML
. का उपयोग नहीं कर पाएंगे अपने कॉलम पर किसी की अनुक्रमणिका), या किसी विशिष्ट प्रकार पर बूलियन जांच करें:
WITH XMLNAMESPACES
(
'http://www.educations.com/Search/Parameters.xsd' as p
)
SELECT @X.query('(/p:parameters/p:parameter)[1] instance of element(*, p:category?)')