Tratamento de Campo XML

11 views
Skip to first unread message

Igor Alves

unread,
Feb 25, 2013, 9:26:54 AM2/25/13
to sql-serv...@googlegroups.com

Tenho um Campo XML no seguinte formato:

<preferencia>
  <dsPreferencia>IGOR Teste</dsPreferencia>
  <coberturas>
    <codigocobertura>20001</codigocobertura>
    <descontocobertura>30,00</descontocobertura>
  </coberturas>
  <coberturas>
    <codigocobertura>20101</codigocobertura>
    <importanciasegurada>11,00</importanciasegurada>
    <descontocobertura>30,00</descontocobertura>
  </coberturas>
  <coberturas>
    <codigocobertura>20108</codigocobertura>
    <importanciasegurada>5001,00</importanciasegurada>
    <descontocobertura>30,00</descontocobertura>
  </coberturas>
  <coberturas>
    <codigocobertura>20011</codigocobertura>
    <importanciasegurada>4,00</importanciasegurada>
    <descontocobertura>0,00</descontocobertura>
  </coberturas>
  <coberturas>
    <codigocobertura>20012</codigocobertura>
    <importanciasegurada>4,00</importanciasegurada>
    <descontocobertura>0,00</descontocobertura>
  </coberturas>

------------------------------------------------------------

SELECT 

ID,DS_XML
,NM_PREFERENCIA
,DS_XML.value('(/preferencia/coberturas/codigocobertura)[1]', 'NVARCHAR(20)')
,DS_XML.value('(/preferencia/coberturas/importanciasegurada)[1]', 'NVARCHAR(20)') 

FROM TB_PREFERENCIA

where
NM_PREFERENCIA = 'IGOR Teste'

---------------

Como faço para verificar se existe a tag:

Exemplo: 

<coberturas>
    <codigocobertura>20001</codigocobertura>
    <descontocobertura>30,00</descontocobertura>
  </coberturas>
  <coberturas>
    <codigocobertura>20101</codigocobertura>
    <importanciasegurada>11,00</importanciasegurada>
    <descontocobertura>30,00</descontocobertura>
  </coberturas>

A cobertura 20001 não tem a TAG importanciasegurada, mas a cobertura 20101 tem. Como verifico isso via SQL Server.



Igor Alves
System Analyst / DBA - EBIX
Cientista da Computação pela Faculdade Ruy Barbosa - FRB
Especialista em Banco de Dados com Ênfase em Alta Disponibilidade - UNIFACS
Tel: (11) 95192-7114(TIM) / (71) 9234-4791(TIM)
Reply all
Reply to author
Forward
0 new messages