Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да избера стойността на атрибута xsi:type в SQL Server?

Без да посочвам колекция, това работи добре за мен:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възстановяване на паралелно архивиране на SQL Server -2

  2. Pivots с динамични колони в SQL Server

  3. Избягвайте дублирането в заявката INSERT INTO SELECT в SQL Server

  4. Връща всички възможни комбинации от стойности на колони в SQL

  5. Как да инсталирате SQL Server на Windows