Последнее обновление
IPV4_CIDR_TO_RANGE
Описание
Вычисляет минимальный и максимальный IPv4-адреса сегмента сети по IPv4-адресу и длине префикса CIDR, возвращая структуру с двумя IPv4-адресами.
Синтаксис
IPV4_CIDR_TO_RANGE(<ipv4_address>, <cidr_prefix>)
Параметры
| Параметр | Описание |
|---|---|
<ipv4_address> | IPv4-адрес. Используйте TO_IPV4 для преобразования строкового представления адреса в IPv4; INET_ATON возвращает BIGINT и не может использоваться для этого параметра. |
<cidr_prefix> | Длина префикса CIDR, тип SMALLINT, диапазон 0-32. |
Возвращаемое значение
Тип возвращаемого значения: STRUCT<min: IPv4, max: IPv4>
Возвращает NULL, если хотя бы один из параметров равен NULL.
Содержимое возвращаемого значения:
- Возвращает структуру с двумя полями:
min: Минимальный IPv4-адрес сегмента сетиmax: Максимальный IPv4-адрес сегмента сети
Примечания по использованию
- Длина префикса CIDR должна находиться в диапазоне 0-32
- Вычисление выполняется на основе маски сети: все биты узла устанавливаются в ноль для минимального адреса и в единицу для максимального адреса
- Поддерживаются различные сочетания параметров-констант и параметров-столбцов
Примеры
Вычисление диапазона адресов для сегмента сети /24.
SELECT ipv4_cidr_to_range(TO_IPV4('192.168.1.1'), 24) as range;
+------------------------------------------------+
| range |
+------------------------------------------------+
| {"min": "192.168.1.0", "max": "192.168.1.255"} |
+------------------------------------------------+
Вычисление диапазона адресов для сегмента сети /16.
SELECT ipv4_cidr_to_range(TO_IPV4('10.0.0.1'), 16) as range;
+----------------------------------------------+
| range |
+----------------------------------------------+
| {"min": "10.0.0.0", "max": "10.0.255.255"} |
+----------------------------------------------+
Обращение к отдельным полям структуры.
SELECT
ipv4_cidr_to_range(TO_IPV4('172.16.1.1'), 24).min as min_ip,
ipv4_cidr_to_range(TO_IPV4('172.16.1.1'), 24).max as max_ip;
+------------+--------------+
| min_ip | max_ip |
+------------+--------------+
| 172.16.1.0 | 172.16.1.255 |
+------------+--------------+
Если префикс CIDR выходит за допустимый диапазон, возникает исключение.
SELECT ipv4_cidr_to_range(TO_IPV4('192.168.1.1'), 33);
ERROR 1105 (HY000): errCode = 2, detailMessage = (...)[INVALID_ARGUMENT]Illegal cidr value '33'
Входные значения NULL:
SELECT ipv4_cidr_to_range(NULL, 24) AS null_address,
ipv4_cidr_to_range(TO_IPV4('192.168.1.1'), NULL) AS null_prefix;
+--------------+-------------+
| null_address | null_prefix |
+--------------+-------------+
| NULL | NULL |
+--------------+-------------+
Ключевые слова
IPV4_CIDR_TO_RANGE