Я ищу некоторые подсказки или хитрости для этой задачи дизайна, с которой я столкнулся:
Мне нужно создать битовую маску двух полей varbinary одного размера, хранящихся в базе данных. Просто чтобы уточнить, нет, это не «таблица разрешений» или что-нибудь. Я бы нормализовал базу данных для таких предметов, и эти данные не могут быть нормализованы. Я храню поле varbinary для динамического хранения битов, которые генерирует наше приложение. Я также ищу эти биты с помощью другого varbinary запроса. В .net я использую тип BigInteger для обработки всех битовых масок, и он отлично справляется с работой, однако я думаю о том, чтобы перенести этот процесс на сервер базы данных, чтобы отфильтровать результаты перед передачей его вызывающей стороне. Прямо сейчас я поддерживаю тип поля varbinary (512) и хочу использовать операторы AND и OR и иметь возможность сравнивать, если ЛЮБОЙ (ИЛИ) или ALL (AND) биты в операторе правой стороны сделали это через. MSDN говорит, что вы можете использовать varbinary () с правым оператором max bigint, однако мне нужно его превысить.
Хороший ресурс, который я нашел, - это публикация в блоге Адама Мачаника на эту тему, но я хочу посмотреть, есть ли другие подходы, прежде чем я углублюсь в это.
http://sqlblog.com/blogs/adam_machanic/archive/2006/07/12/bitmask-handling-part-3-logical-operators.aspx
Это будет для SQL 2005 или выше. Если бы в 2008 году была функция, не найденная в 2005 году, я бы с этим согласился, но я пока не смог ее идентифицировать.
Любые советы или подсказки приветствуются.
Спасибо.
Трэвис Уидден