sql >> Databasteknik >  >> RDS >> Sqlserver

Hur väljer man värdet för xsi:type-attributet i SQL Server?

Utan att ange samling fungerar detta bra för mig:

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)')

Kan du posta innehållet i search.SearchParameters ?

Uppdatering:

På schemabundna XML , detta verkar vara omöjligt.

Du kan gjuta din kolumn till en freetype 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)')

(men du kommer inte att kunna använda XML index för någon i din kolumn), eller utför en boolesk kontroll av en specifik typ:

WITH XMLNAMESPACES
        (
        'http://www.educations.com/Search/Parameters.xsd' as p
        )
SELECT @X.query('(/p:parameters/p:parameter)[1] instance of element(*, p:category?)')


  1. MySQL - universellt sätt att få ca. radstorlek i byte

  2. ROracle dbWriteTable skapar Oracle TIMESTAMP-kolumner för R DATE-kolumner

  3. EXP() Exempel i SQL Server

  4. Hur man returnerar en delsträng från en sträng i SQL Server med SUBSTRING()-funktionen