如何在sql中查找使用按位技术存储的用户角色?

问题描述:

我想运行一个简单的查询来获得一个特定角色的所有用户,问题是用户角色存储在使用2模式的幂的按位数。如何在sql中查找使用按位技术存储的用户角色?

例如角色表是。

1  role one 
2  role two... 
4 
8 
16 

在user表中,我们有

username other columns roles 
    billy  ....  192949 

我不知道如何查询那样的角色...

+0

1)什么味道的SQL 2)你可以改变它们的存储方式吗? – NullUserException

对于一个角色:

DECLARE @RoleOne = 1 

SELECT * FROM Users 
WHERE (roles & @RoleOne) > 0 

或者是所有多重角色的成员

DECLARE @MultipleRoles = 1 + 4 + 64 

SELECT * FROM Users 
WHERE (roles & @MultipleRoles) = @MultipleRoles 

(我假设SQL Server,但其他口味将非常相似)