如何在sql中查找使用按位技术存储的用户角色?
问题描述:
我想运行一个简单的查询来获得一个特定角色的所有用户,问题是用户角色存储在使用2模式的幂的按位数。如何在sql中查找使用按位技术存储的用户角色?
例如角色表是。
1 role one
2 role two...
4
8
16
在user表中,我们有
username other columns roles
billy .... 192949
我不知道如何查询那样的角色...
答
对于一个角色:
DECLARE @RoleOne = 1
SELECT * FROM Users
WHERE (roles & @RoleOne) > 0
或者是所有多重角色的成员
DECLARE @MultipleRoles = 1 + 4 + 64
SELECT * FROM Users
WHERE (roles & @MultipleRoles) = @MultipleRoles
(我假设SQL Server,但其他口味将非常相似)
1)什么味道的SQL 2)你可以改变它们的存储方式吗? – NullUserException