Я нашел несколько потоков по этому вопросу, используя функцию поиска, но ничего для чисто решения T-SQL.
необходимость - система хранит еженедельное расписание в виде 0 и 1 в строковом формате дляпредставлять неделю.1 означает да, 0 означает нет .... итак, 1100111 означает воскресенье да (первый), понедельник да (второй 1), вторник нет (0) ... и т. Д.
Короткий вопрос - Как сделатьЯ иду от символа ascii, такого как>, к его шестнадцатеричному коду '3E' и, в конечном итоге, к его двоичному представлению '00111110'?
Длинный вопрос - я извлекаю из плоской файловой системы, в которой хранится таблицакак:
ID int,
priority_1 varchar (2)
...
Это на самом деле идет к priroity_128 (глупый плоский файл), но яМеня интересует только 1-7, и логику для одних можно легко использовать для других.К сожалению, я не контролирую эту часть выписки.Значения, которые я получаю, выглядят так:
1>
2 (отредактируйте, я на самом деле поместил здесь символ, который я получаю из системы, но форум не любит.)
3 |
4 Y
Мне кажется, что они выглядят как их символы ascii из-за преобразования, которое я извлекаю.
select convert(varbinary,'>',2)
Возвращает 0x3E.Часть 0x можно игнорировать ... 3 в двоичном виде - 0011, а E - 1110 ... 3E = 00111110. Обрежьте первый 0, и он оставляет 7-битный код, который я ищу.К сожалению, я не знаю, как выразить эту логику здесь, в T-SQL.Есть идеи?Я думаю, как функцию было бы проще всего использовать ... что-то вроде:
select id, binaryversionof(priority_1)