选择缺少的行我有一个SQL表像下面的使用SQL LIKE
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
子句之间是否有组合?
要不我怎么能继续
嗯,这是一个有兴趣的方法,但似乎不喜欢一个很好的长期解决方案。我想理想情况下你会有两张桌子,这会让你稍后变得更加灵活......即。角色和权限...即。 'ROLES TABLE:roleID 1 = Admin,roleID 2 = Viewer' 'PERMISSIONS TABLE:roleID = 1,view = yes,admin = yes,edit = yes; roleId = 2,view = yes,admin = no,edit = no'。然后你就可以做更复杂的查询。 – timh 2014-11-25 10:18:38
如何获得第1行的查询? – 2014-11-25 10:18:46
上面提供的脚本不会记录'管理员查看者用户管理器',因为'用户'没有在您的LIKE子句中指定。如果你的参数是动态的,我会建议DSQL。声明一个参数,写出你的查询并执行。但我不确定如何将参数分成3个(管理员/查看者/管理员)变量。 – PKirby 2014-11-25 10:41:57