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

时间:2011-09-22 23:48:54

标签: sql bit-manipulation roles

我想运行一个简单的查询来获取特定角色的所有用户,问题是用户角色以2位模式的幂为按位数存储。

例如,角色表是。

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

在用户表中我们有

username  other columns   roles
  billy       ....        192949

我不确定如何查询像这样的角色......

1 个答案:

答案 0 :(得分:2)

对于单一角色:

DECLARE @RoleOne = 1

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

或所有多个角色的成员

DECLARE @MultipleRoles = 1 + 4 + 64

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

(我假设SQL Server,但对其他版本非常相似)