#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)