Определение CIDR IP-адреса без длины префикса
Функция
Определение CIDR IP-адреса без длины префикса.
Спецификация
::=
Синтаксические правила
-
< Байтовое выражение >
должно иметь тип BYTE(5).
Возвращаемое значение
-
Сетевой IP-адрес без префикса. Все биты CIDR IP-адреса после префикса обнуляются.
-
Формирование сетевого адреса выполняется по следующему алгоритму:
-
шестнадцатеричное представление сетевого адреса преобразуется в двоичное представление, например, 5052200B15 преобразовать в двоичное (в данной функции – без префикса 15): 01010000 01010010 10000000 00001011
-
префикс имеет значение 15 (шестнадцатеричное), что равно значению 21 (десятичное), т.е. длина префикса в сетевом адресе начинается с 21 позиции в двоичном сетевом адресе: 010100000101001010000
000 00001011
-
т.к. требуется получить сетевой адрес без префикса, то обнулятся все биты сетевого адреса, начиная с 21 бита: 0101 0000 1010 01010000
000 00000000
-
полученное значение представляет искомый сетевой адрес в шестнадцатеричном виде: 50521000000000000000
-
-
Тип возвращаемого значения – VARCHAR(15).
Примеры
select cidrpfx (cast HEX('5052200B15') as byte(5)); | 80.82.32.0|
create or replace table tab2 (cidr byte(5)); insert into tab2 values(hex('8082320010')); select cidrpfx( cidr ) from tab2; | 128.130.0.0 |