sql >> Databáze >  >> RDS >> Sqlserver

Jak vybrat hodnotu atributu xsi:type v SQL Server?

Bez určení kolekce mi to funguje dobře:

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

Mohl byste prosím zveřejnit obsah search.SearchParameters ?

Aktualizace:

Na schématu vázaném XML , to se zdá být nemožné.

Svůj sloupec můžete přenést do XML volného typu :

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

(nebudete však moci používat XML indexy libovolného ve vašem sloupci), nebo proveďte booleovskou kontrolu pro konkrétní 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. Získejte poslední ID na vloženém řádku v Oracle DB

  2. Nastavte jazyk používaný pro funkce data a času v MariaDB

  3. PHP MySQL dotaz nejoblíbenější za posledních 24 hodin

  4. JOIN mysql php funkce místo foreach smyčky