TSQL vbinary bitmasking с правым оператором varbinary - PullRequest
4 голосов
/ 23 января 2012

Я ищу некоторые подсказки или хитрости для этой задачи дизайна, с которой я столкнулся:

Мне нужно создать битовую маску двух полей 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 году, я бы с этим согласился, но я пока не смог ее идентифицировать.

Любые советы или подсказки приветствуются.

Спасибо.

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

1 Ответ

0 голосов
/ 14 июня 2012

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

Хотя это очень быстро запутывается.

...