2011-09-22 77 views
0

我想運行一個簡單的查詢來獲得一個特定角色的所有用戶,問題是用戶角色存儲在使用2模式的冪的按位數。如何在sql中查找使用按位技術存儲的用戶角色?

例如角色表是。

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

在user表中,我們有

username other columns roles 
    billy  ....  192949 

我不知道如何查詢那樣的角色...

+0

1)什麼味道的SQL 2)你可以改變它們的存儲方式嗎? – NullUserException

回答

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,但其他口味將非常相似)

相關問題