Проверка адреса по адресной маске (CIDRMATCH)
Функция
Проверка принадлежности адреса к указанной сети по адресной маске.
Адресная маска – битовая маска, используемая для выбора бит из IP-адреса с целью адресации подсети. Маска имеет размер 32 бита и выделяет сетевую часть IP-адреса и один или несколько бит локальной части адреса.
Спецификация
::=::=Синтаксические правила
-
<Байтовое выражение 1>должно иметь типBYTE(5),<байтовое выражение 2>и<маска>должны иметь типBYTE(4).
Возвращаемое значение
-
Значение
TRUE, если CIDR IP-адрес из<байтового выражения 1>идентичен по<маске>адресу<байтового выражения 2>,FALSE– в противном случае. Идентификация адресов выполняется путем побитового сравнения<байтового выражения 1>и<байтового выражения 2>. Порядковые номера сравниваемых бит соответствуют порядковым номерам нулевых бит в<маске>. -
Тип возвращаемого значения –
BOOLEAN.
Примеры
select cidrmatch(cidrtoraw('80.82.32.1/32'),
cast cidrtoraw('80.82.32.00/10') as byte(4),
cast hex('000000ff') as byte(4));
или
select cidrmatch(cidrtoraw('80.82.32.1/32'),
cast cidrtoraw('80.82.32.00/10') as byte(4),
cast cidrtoraw('0.0.0.255/8') as byte(4));
|T|
create or replace table tab2 (cidr byte(5));
insert into tab2 values(hex('8082320010'));
select cidrmatch( cidr, hex('80500000'), hex('00ffffff') ) from tab2;
| T|
select cidrmatch( cidr, hex('80500000'), hex('ff000000') ) from tab2;
| F|