我有一个SQL表,如下所示
RoleId Roles
------------------------------------------
1 Administrators Viewers Users Managers
2 Administrators Viewers Managers
3 Administrators
4 Viewers
我需要根据角色获得RoleId
。我将每个角色都作为一个字符串。
所以当我使用以下查询时
SELECT *
FROM Roles
WHERE Roles like '%Administrators Viewers Managers%'
我只获得前两行
RoleId Roles
--------------------------------------------------
1 Administrators Viewers Users Managers
2 Administrators Viewers Managers
但我需要它来获取剩余的行,因为它包含Administrators
和Viewers
。
我实际上使用存储过程来提供角色作为参数。所以它并不总是一样的。 动态。我不能使用OR。我需要一个适用于任何参数的解决方案。
IN
和LIKE
条款之间是否有组合?
或者我该如何进行
答案 0 :(得分:2)
您可以使用OR
:
SELECT *
FROM Roles
WHERE Roles like '%Administrators%'
OR Roles like '%Viewers%'
答案 1 :(得分:0)
SELECT * FROM Roles
WHERE Roles like '%Administrators%' OR Roles like '%Viewers%'
OR Roles like '%Administrators Viewers%'
答案 2 :(得分:0)
如果您dynamically
将roles
作为参数传递,请使用以下查询
为了
SQL Server 2000及更高版本
SELECT *
FROM Roles
WHERE Roles like '%'+@Roles+'%'
SQL Server 2008及更高版本
SELECT *
FROM Roles
WHERE Contains(Roles,@Roles)
但上述查询只会根据您传递的roles
生成结果