Consultar colunas XML com XQuery em T-SQL


O exemplo seguinte pode ser executado aqui


CREATE
 TABLE propertyconf
  (
     id       INT IDENTITY(1, 1) NOT NULL,
     NAME     VARCHAR(8) NULL,
     document NVARCHAR(max) NULL
  )

INSERT INTO propertyconf
SELECT 'Property',
       (SELECT 'Street A' AS 'Street',
               'My City'  AS 'City'
        FOR xml path('Address'), root('Property')) AS Doc

INSERT INTO propertyconf
VALUES     ('Location',
'<Property><Location type="address"><Composition>street</Composition><Composition>city</Composition></Location></Property>'
)

SELECT prop.addr.value('Street[1]', 'nvarchar(512)') AS Street,
       prop.addr.value('City[1]', 'nvarchar(512)')   AS City
FROM   (SELECT CONVERT(XML, document) AS c
        FROM   propertyconf
        WHERE  NAME = 'Property') AS t
       OUTER apply c.nodes('/Property/Address') AS Prop (addr)

SELECT prop.loc.value('../@type', 'nvarchar(512)') AS LocationType,
       prop.loc.value('.[1]', 'nvarchar(512)')     AS Composition
FROM   (SELECT CONVERT(XML, document) AS c
        FROM   propertyconf
        WHERE  NAME = 'Location') AS t
       OUTER apply c.nodes('/Property/Location/Composition') AS Prop (loc) 
Licença CC BY-SA 4.0 Silvia Pinhão Lopes, 27.11.21
Print Friendly and PDF

Sem comentários:

Com tecnologia do Blogger.