Сервер MS SQL - преобразование строки HEX в целое число

Этот ответ на тот же вопрос:

Преобразовать целое число в шестнадцатеричное и шестнадцатеричное в целое

. . не работает для меня.

Я не могу перейти от HEX-строки к целому числу с помощью MS SQL Server 2005 CAST или CONVERT. Я упустил что-то тривиальное? Я много искал, и лучшее, что я могу найти, - это длинные пользовательские функции, позволяющие перейти от шестнадцатеричного строкового значения к чему-то, что выглядит как десятичное int. Конечно, есть простой способ сделать это непосредственно в запросе, используя встроенные функции, а не писать пользовательскую функцию?

Спасибо

Измените, чтобы включить примеры:

выберите CONVERT (INT, 0x89)

работает как и ожидалось, но

select CONVERT (INT, '0x' + substring (msg, 66, 2)) from sometable

получает меня:

«Ошибка преобразования при преобразовании значения varchar '0x89' в тип данных int. "

дополнительный явный CAST:

select CONVERT (INT, CAST ('0x89' AS 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.

20
задан Community 23 May 2017 в 12:17
поделиться