select
Roles
from
MyTable
where
Roles.value('(/root/role)[1]', 'varchar(max)') like 'StringToSearchFor'
Estas páginas le mostrarán más sobre cómo consultar XML en T-SQL:
Consultar campos XML usando t-sql
Acoplar datos XML en SQL Server
EDITAR
Después de jugar un poco más, terminé con esta increíble consulta que usa CROSS APPLY . Este buscará en cada fila (rol) el valor que pones en tu expresión similar ...
Dada esta estructura de tabla:
create table MyTable (Roles XML)
insert into MyTable values
('<root>
<role>Alpha</role>
<role>Gamma</role>
<role>Beta</role>
</root>')
Podemos consultarlo así:
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%'
Puede consultar el Fiddle de SQL aquí: http://sqlfiddle.com/#!18/dc4d2/1/0
[1]
en su respuesta?