Как найти роли пользователей, хранящихся с использованием побитовой техники в SQL? - PullRequest
0 голосов
/ 23 сентября 2011

Я хотел бы выполнить простой запрос, чтобы получить всех пользователей определенной роли, проблема в том, что роли пользователей хранятся в битовых числах с использованием шаблона степени 2.

Например, таблица ролей.

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

В пользовательской таблице у нас есть

username  other columns   roles
  billy       ....        192949

Я не уверен, как запросить такую ​​роль ...

1 Ответ

2 голосов
/ 23 сентября 2011

Для одной роли:

DECLARE @RoleOne = 1

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

Или член всех нескольких ролей

DECLARE @MultipleRoles = 1 + 4 + 64

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

(я предполагаю, что SQL Server будет очень похож на другие разновидности)

...