TSQL vbinary bitmasking с правым оператором varbinary

Я ищу некоторые подсказки или уловки для этой проблемы дизайна, с которой я сталкиваюсь:

У меня есть необходимость в битовой маске двух полей varbinary одного размера, хранящихся в базе данных. Просто чтобы уточнить, нет, это не "таблица разрешений" или что-нибудь. Я бы нормализовал базу данных для таких предметов, и эти данные не могут быть нормализованы. Я храню поле varbinary для динамического хранения битов, которые генерирует наше приложение. Я также ищу эти биты с помощью другого varbinary запроса. В.net я использую тип BigInteger для обработки всех битовых масок, и он отлично справляется со своей задачей, однако я думаю о том, чтобы перенести этот процесс на сервер базы данных, чтобы отфильтровать результаты перед передачей его вызывающей стороне. Прямо сейчас я поддерживаю поле типа varbinary(512) и хочу использовать операторы И и ИЛИ и иметь возможность сравнивать, если ЛЮБОЙ (ИЛИ) или ВСЕ (И) битов в операторе правой стороны сделали это через. 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 году, я бы с этим согласился, но я пока не смог ее определить.

Любые советы или рекомендации очень приветствуются.

Благодарю.

Трэвис Уидден

1 ответ

Если вы знаете максимальную длину растрового изображения, вы МОЖЕТЕ распределить его по нескольким столбцам и маскировать их по отдельности.

Это становится грязно очень быстро, хотя.

Другие вопросы по тегам