Ввод строки сопоставлен с двоичным полем в SQL WHERE

#sql #sql-server-2008

#sql #sql-server-2008

Вопрос:

Вот сценарий: у меня есть оператор SQL select, который возвращает двоичный объект данных в виде строки. Это не может быть изменено, это выходит за рамки того, что я могу изменить. Так, например, он вернул бы ‘1628258DB0DD2F4D9D6BC0BF91D78652’.

Если я вручную добавлю 0x перед этой строкой в запросе, я получу результаты, которые я ищу, например: ВЫБЕРИТЕ a, b ИЗ mytable, ГДЕ uuid = 0x1628258DB0DD2F4D9D6BC0BF91D78652 Мой результирующий набор правильный.

Однако мне нужно найти совместимые с Microsoft SQL Server 2008 средства для выполнения этого программно. Простое объединение 0x со строковой переменной не работает. Очевидно, но я действительно это пробовал.

Помогите, пожалуйста 🙂 Спасибо, Отметьте

Ответ №1:

Я понимаю ваш вопрос так, что у вас есть столбец uuid , который binary .

Вы пытаетесь выбрать строки с определенным значением в uuid , но вы пытаетесь использовать строку, подобную so:

SELECT a, b FROM mytable WHERE uuid = '0x1628258DB0DD2F4D9D6BC0BF91D78652'

который не работает. Если это правильно, вы можете использовать CONVERT функцию со стилем 2, чтобы SQL Server обрабатывал строку как шестнадцатеричную и не требовал '0x' в качестве первых символов:

 SELECT a, b 
FROM mytable 
WHERE uuid = CONVERT(binary(16), '1628258DB0DD2F4D9D6BC0BF91D78652', 2)