SORU
27 NİSAN 2012, Cuma


Nasıl SQL Server XML sütuna bir değer sorgu miyim

XML bir XML sütun (Roles) denilen bir SQL Server veritabanında saklanan şu var.

<root>
   <role>Alpha</role>
   <role>Beta</role>
   <role>Gamma</role>
</root>

Onları belirli bir role sahip tüm satırları listelemek istiyorum. Bu rol parametresi ile geçti.

CEVAP
27 NİSAN 2012, Cuma


select
  Roles
from
  MyTable
where
  Roles.value('(/root/role)[1]', 'varchar(max)') like 'StringToSearchFor'

Bu sayfalar size daha fazla T-SQL: XML sorgu için nasıl gösterir

Querying XML fields using t-sql

Flattening XML Data in SQL Server

EDİT

Biraz daha oynadıktan sonra, CROSS APPLY kullandığı bu inanılmaz Sorgu ile sona erdi. Bu her satır (rol) gibi bir ifade koymak değeri aramak

Verilen bu tablo yapısı:

create table MyTable (Roles XML)

insert into MyTable values
('<root>
   <role>Alpha</role>
   <role>Gamma</role>
   <role>Beta</role>
</root>')

Bunun gibi bu sorgu edebiliriz:

select * from 

(select 
       pref.value('(text())[1]', 'varchar(32)') as RoleName
from 
       MyTable CROSS APPLY

       Roles.nodes('/root/role') AS Roles(pref)
)  as Result

where RoleName like '%ga%'

SQL Keman burada kontrol edebilirsiniz: http://sqlfiddle.com/#!3/ae0d5/13

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • chickenby

    chickenby

    2 HAZİRAN 2008
  • MysteryGuitarMan

    MysteryGuita

    16 HAZİRAN 2006
  • TechRax

    TechRax

    21 EYLÜL 2009