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

  • BDGcustoms

    BDGcustoms

    24 NİSAN 2011
  • Ricardo Cerqueira

    Ricardo Cerq

    28 Mayıs 2008
  • SamsTech

    SamsTech

    4 NİSAN 2014