Это ответ на вопрос, похожий на тот же вопрос:
Преобразование целого числа в шестнадцатеричное и шестнадцатеричное в целое число
.. у меня не работает.
Я не могу перейти к шестнадцатеричной строке с целым числом, используя MS SQL Server 2005 CAST или CONVERT. Я что-то упускаю тривиально? Я много искал, и лучшее, что я могу найти, - это длинные пользовательские функции, которые переходят от значения шестнадцатеричной строки к чему-то, что выглядит как десятичное целое число. Конечно, есть простой способ сделать это непосредственно в запросе, используя встроенные функции вместо написания пользовательской функции?
Спасибо
Изменить, чтобы включить примеры:
выберите CONVERT (INT, 0x89)
работает как положено, но
выберите CONVERT (INT, '0x' + подстрока (msg, 66, 2)) из sometable
получает меня:
"Преобразование не удалось при преобразовании значения varchar '0x89' в тип данных int."
дополнительный явный CAST:
выберите CONVERT (INT, CAST ('0x89' КАК VARBINARY))
выполняется, но возвращает 813185081.
Замена 'Int', 'Decimal' и т. Д. На 'Varbinary' приводит к ошибке. В общем случае строки, которые кажутся числовыми, интерпретируются как числовые, если это необходимо, но не в этом случае, и, по-видимому, не существует CAST, который распознает HEX. Я хотел бы думать, что есть что-то простое и очевидное, и я просто пропустил это.
Microsoft SQL Server Management Studio Express 9.00.3042.00
Microsoft SQL Server 2005 - 9.00.3080.00 (Intel X86) 6 сентября 2009 г. 01:43:32 Copyright (c) 1988-2005 Microsoft Corporation Express Edition с расширенными службами в Windows NT 5.1 (сборка 2600: пакет обновления 3)
Подводя итог: я хочу взять шестнадцатеричную строку, которая является значением в таблице, и отобразить ее как часть результата запроса в виде десятичного целого числа, используя только определенные системой функции, а не UDF.