我将以下XML存储在SQL Server数据库的XML列(名为Roles
)中。
<root>
<role>Alpha</role>
<role>Beta</role>
<role>Gamma</role>
</root>
我想列出在其中具有特定角色的所有行。此角色通过参数传递。
发布于 2012-04-27 13:42:18
declare @T table(Roles xml)
insert into @T values
('<root>
<role>Alpha</role>
<role>Beta</role>
<role>Gamma</role>
</root>')
declare @Role varchar(10)
set @Role = 'Beta'
select Roles
from @T
where Roles.exist('/root/role/text()[. = sql:variable("@Role")]') = 1
如果希望查询以where col like '%Beta%'
方式工作,则可以使用contains
declare @T table(Roles xml)
insert into @T values
('<root>
<role>Alpha</role>
<role>Beta</role>
<role>Gamma</role>
</root>')
declare @Role varchar(10)
set @Role = 'et'
select Roles
from @T
where Roles.exist('/root/role/text()[contains(., sql:variable("@Role"))]') = 1
发布于 2012-04-27 12:05:49
如果您的字段名为Roles,表名为table1,则可以使用以下命令进行搜索
DECLARE @Role varchar(50);
SELECT * FROM table1
WHERE Roles.exist ('/root/role = sql:variable("@Role")') = 1
发布于 2016-10-05 03:12:58
我想出了一个简单的工作,下面也很容易记住:-)
select * from
(select cast (xmlCol as varchar(max)) texty
from myTable (NOLOCK)
) a
where texty like '%MySearchText%'
https://stackoverflow.com/questions/10344553
复制相似问题