У меня есть таблица пользователей, и я хочу ВЫБРАТЬ некоторые строки по критериям битовой маски. Я попытаюсь объяснить свою проблему на небольшом примере.
Структура таблицы пользователи
user_id int [primary key, auto_increment]
user_email varchar(200)
user_privileges int
Примечание:У него больше полей, но они не имеют отношения к этому вопросу.
Заполненная таблица может выглядеть так
+---------+--------------------+-----------------+
| user_id | user_email | user_privileges | << binary
+---------+--------------------+-----------------+
| 1 | john@example.com | 165 | 10100101
| 2 | max@example.com | 13 | 00001101
| 3 | trevor@example.com | 33 | 00100001
| 4 | paul@example.com | 8 | 00001000
| 5 | rashid@example.com | 5 | 00000101
+---------+--------------------+-----------------+
Теперь я хочу ВЫБРАТЬ пользователей по определенной битовой маске привилегий (по столбцу user_privileges
).
Например:
Мой вопрос:Возможно ли это из запроса или мне нужно пройти всех пользователей по одному -по -и проверить это значение из кода PHP? Кроме того, возможно ли, чтобы поле пользователь _привилегии было text
, содержащее шестнадцатеричные числа вместо целых чисел? Мне нужен рабочий пример запроса mysql.
Примечание:Это всего лишь простой пример с установленной 8 -битной привилегией -. В реальной среде он может иметь большие наборы (большие целые числа, больше байтов ). Создание отдельного столбца для каждого состояния привилегий работает нормально, но это невозможное решение. Я бы предпочел работать с шестнадцатеричными значениями, но и с целыми числами тоже все в порядке, лучше что-то, чем ничего.
Спасибо заранее.