Я выполняю операции хеширования, и мне нужно последовательно, точно, эффективно и т.д. добавлять необработанные байты.
Я не могу разбираться с ASCII-кодированными строками чисел, мне просто нужно получить необработанные байты.
Функции преобразования MySQL очень запутаны и не дают результатов, которые могут показаться очевидными для такого парня из SQL-Server, как я.
Например, BINARY 123456
создает строку в кодировке ASCIIс 6 символами, а не кажущейся очевидной BINARY ( 3 )
string 00000001 11100010 01000000
aka 0x01E240
Пока что единственный способ, которым я могу получить правильное преобразование, - это назначить шестнадцатеричный литерал - что, очевидно, нецелесообразново время выполнения.
SET @int_value = 123456 ; -- Decimal value
SET @hex_value = 0x01E240 ; -- The same value, in hexadecimal,
-- 6 hex digits = 3 bytes
SELECT LENGTH ( BINARY @int_value ) , LENGTH ( BINARY @hex_value ) , LENGTH ( BINARY HEX ( @int_value ) ) ;
Так что в этом примере, как я могу преобразовать целочисленное значение (например, DECLARE
'целочисленная переменная или целое числостолбец) 123456
в строку из 3 байтов?
РЕДАКТИРОВАТЬ:
В соответствии с запросом в комментариях, SQL-Server по умолчанию выдает желаемые результаты:
ЭтоМне нужно подражать поведению в MySQL.