select
Roles
from
MyTable
where
Roles.value('(/root/role)[1]', 'varchar(max)') like 'StringToSearchFor'
Na tych stronach znajdziesz więcej informacji na temat wykonywania zapytań XML w T-SQL:
Wykonywanie zapytań dotyczących pól XML przy użyciu t-sql
Spłaszczanie danych XML w SQL Server
EDYTOWAĆ
Po dłuższej zabawie otrzymałem to niesamowite zapytanie, które używa CROSS APPLY . Ten przeszuka każdy wiersz (rolę) pod kątem wartości, którą umieścisz w swoim podobnym wyrażeniu ...
Biorąc pod uwagę tę strukturę tabeli:
create table MyTable (Roles XML)
insert into MyTable values
('<root>
<role>Alpha</role>
<role>Gamma</role>
<role>Beta</role>
</root>')
Możemy zapytać o to w ten sposób:
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%'
Możesz sprawdzić SQL Fiddle tutaj: http://sqlfiddle.com/#!18/dc4d2/1/0
[1]
w twojej odpowiedzi?