TSQL vbinary bitmasking с правым оператором varbinary
Я ищу некоторые подсказки или уловки для этой проблемы дизайна, с которой я сталкиваюсь:
У меня есть необходимость в битовой маске двух полей varbinary одного размера, хранящихся в базе данных. Просто чтобы уточнить, нет, это не "таблица разрешений" или что-нибудь. Я бы нормализовал базу данных для таких предметов, и эти данные не могут быть нормализованы. Я храню поле varbinary для динамического хранения битов, которые генерирует наше приложение. Я также ищу эти биты с помощью другого varbinary запроса. В.net я использую тип BigInteger для обработки всех битовых масок, и он отлично справляется со своей задачей, однако я думаю о том, чтобы перенести этот процесс на сервер базы данных, чтобы отфильтровать результаты перед передачей его вызывающей стороне. Прямо сейчас я поддерживаю поле типа varbinary(512) и хочу использовать операторы И и ИЛИ и иметь возможность сравнивать, если ЛЮБОЙ (ИЛИ) или ВСЕ (И) битов в операторе правой стороны сделали это через. MSDN говорит, что вы можете использовать varbinary() с правым оператором max bigint, однако мне нужно его превзойти.
Хороший ресурс, который я нашел, - это публикация в блоге Адама Мачаника на эту тему, но я хочу посмотреть, есть ли другие подходы, прежде чем углубляться в это.
Это было бы для SQL 2005 или выше. Если бы в 2008 году была функция, не найденная в 2005 году, я бы с этим согласился, но я пока не смог ее определить.
Любые советы или рекомендации очень приветствуются.
Благодарю.
Трэвис Уидден
1 ответ
Если вы знаете максимальную длину растрового изображения, вы МОЖЕТЕ распределить его по нескольким столбцам и маскировать их по отдельности.
Это становится грязно очень быстро, хотя.