Я пытаюсь запросить IP-адреса из журналов Forefront Firewall, и я немного застрял в форматировании IP
C0A8E008-FFFF-0000-0000-000000000000
Может ли кто-нибудь дать мне команду MSSQL, чтобы превратить это в стандартную возможность редактирования для человека?
ОБНОВЛЕНИЕ, теперь я вижу, что мне нужно преобразовать первые 8 символов из шестнадцатеричного в десятичный .... которые я затем могу преобразовать в IP. трюк состоит в том, чтобы проанализировать эти первые символы из поля с помощью SQL
Вы можете использовать функцию подстроки, чтобы получить четыре октета IP-адреса. Ты можешь сделать:
SELECT hex_to_dec(substring(field, 1, 2)) + '.' + hex_to_dec(substring(field, 3, 2))
+ '.' + hex_to_dec(substring(field, 5, 2)) + '.' + hex_to_dec(substring(field, 7, 2))
<FROM, WHERE ...>
Я не уверен, есть ли в MSSQL функция, которая выполняет преобразование шестнадцатеричного числа в десятичное. hex_to_sec
. Вам просто нужно найти способ ее реализовать.
Я не знаю, как это сделать в MSSQL, но чтобы дать вам представление о методе, в приведенном выше примере C0A8E008 - 192.168.224.08. Разделите C0A8E008 на четыре 2-х шестнадцатеричных блока и преобразуйте каждый в десятичный.