Ohne Angabe der Sammlung funktioniert das gut für mich:
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)')
Könnten Sie bitte den Inhalt von search.SearchParameters
posten ?
Aktualisierung:
Auf schemagebundenem XML
, das scheint unmöglich zu sein.
Sie können Ihre Spalte in ein Freetype-XML
umwandeln :
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)')
(aber Sie können XML
nicht verwenden Indizes beliebiger Ihrer Spalte) oder eine boolesche Prüfung eines bestimmten Typs durchführen:
WITH XMLNAMESPACES
(
'http://www.educations.com/Search/Parameters.xsd' as p
)
SELECT @X.query('(/p:parameters/p:parameter)[1] instance of element(*, p:category?)')