使用SQL LIKE选择缺少的行

时间:2014-11-25 10:14:21

标签: sql sql-server sql-server-2008

我有一个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 

但我需要它来获取剩余的行,因为它包含AdministratorsViewers。 我实际上使用存储过程来提供角色作为参数。所以它并不总是一样的。 动态。我不能使用OR。我需要一个适用于任何参数的解决方案。

INLIKE条款之间是否有组合?

或者我该如何进行

3 个答案:

答案 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)

如果您dynamicallyroles作为参数传递,请使用以下查询 为了

SQL Server 2000及更高版本

SELECT * 
FROM Roles 
WHERE Roles like '%'+@Roles+'%'

SQL Server 2008及更高版本

SELECT * 
FROM Roles 
WHERE Contains(Roles,@Roles)

但上述查询只会根据您传递的roles生成结果