Конвертировать Hex в IP-запрос - PullRequest
0 голосов
/ 11 июня 2019

Проблема в том, что я хочу написать встроенный запрос для преобразования шестнадцатеричного кода в формат ip, но я получаю неправильный результат

Я пытаюсь написать запрос, который преобразует шестнадцатеричный код в ip, но результат Iя получаю неправильно

SELECT DNS_SERVER1,
        CONVERT(VARCHAR,
         c.DNS_SERVER1/16777216)+'.'+CONVERT(VARCHAR, c.DNS_SERVER1/65535 % 256)+'.'+CONVERT(VARCHAR, c.DNS_SERVER1/256 % 256)+'.'+CONVERT(VARCHAR, c.DNS_SERVER1 % 256) as DNS_SERVER1_CONVERTED
FROM SEPMAdmin.SEM_COMPUTER AS c

Используя запрос выше и пример данных "86921E34", я должен получить "134.146.30.52", но я получаю "-121.-110.-225.-204"

1 Ответ

0 голосов
/ 11 июня 2019

Попробуй вот так ...

DECLARE @hex_val binary(4) = 0x86921E34;

SELECT 
    ip_address = CONCAT(
            CONVERT(int, SUBSTRING(@hex_val, 1,1)), '.',
            CONVERT(int, SUBSTRING(@hex_val, 2,1)), '.',
            CONVERT(int, SUBSTRING(@hex_val, 3,1)), '.',
            CONVERT(int, SUBSTRING(@hex_val, 4,1))
            );

Результат ...

ip_address
---------------------------------------------------
134.146.30.52
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...