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ş:
Nasıl bir kayıt (select top 1) Her kay...
Nasıl MAX(Sütun değeri), SQL başka bir...
Nasıl SQL Server belirli bir tabloya b...
nasıl sql server en iyi 100 kayıtları ...
Bash, nasıl eğer bir string değer ile ...