Функции для работы с IP-адресами

Функции для работы с IP-адресами в RQL предназначены для выполнения различных операций преобразования и анализа с IPv4 и IPv6 адресами.

Набор поддерживаемых функций RQL и их поведение зависят от версии установленного ClickHouse. Если функция не поддерживается в используемой версии ClickHouse, она также не будет доступна в RQL.

Ознакомиться с актуальным списком функций и их поведением можно в официальной документации ClickHouse.

Обратите внимание, что для функций в официальной документации ClickHouse может быть указана версия, в которой эти функции были введены. Это позволит определить, доступна ли рассматриваемая функция в вашей версии ClickHouse.

Функции для работы с IP-адресами
Функция Описание

cutIPv6(x, bytesToCutForIPv6, bytesToCutForIPv4)

Принимает IPv6-адрес x в двоичном формате (тип FixedString(16) или IPv6), и возвращает строку с адресом в текстовом формате, в котором удалено указанное количество байт. Для IPv6-адресов отбрасывается число байт, равное bytesToCutForIPv6, а для IPv4-адресов — равное bytesToCutForIPv4. Оба параметра имеют тип UInt8.

IPv4CIDRToRange(ipv4, cidr)

Принимает IPv4-адрес ipv4 (тип IPv4 или String) и длину префикса cidr (тип UInt8), и возвращает кортеж из двух IPv4-адресов, представляющих первый и последний адреса в заданной подсети.

IPv4NumToString(num)
INET_NTOA(num)

Преобразует 32-битное целое число num в строковое представление IPv4-адреса в десятичной записи с разделением октетов точками (формат A.B.C.D), интерпретируя входное значение в сетевом порядке байтов (big-endian). Возвращает число, представляющее MAC-адрес, или 0, если формат недопустим.

IPv4NumToStringClassC(num)

Аналогично IPv4NumToString, но заменяет последний октет результирующей строки на xxx.

IPv4StringToNum(string)
INET_ATON(string)

Принимает строку string, содержащую IPv4-адрес, и преобразует её в 32-битное целое число. Обратная функция к IPv4NumToString. В случае неверного формата IPv6-адреса генерирует исключение.

IPv4StringToNumOrDefault(string)

Аналогично IPv4StringToNum, но принимает строку string и возвращает 0 при неверном формате IPv4-адреса.

IPv4StringToNumOrNull(string)

Аналогично IPv4StringToNum, но принимает строку string и возвращает null при неверном формате IPv4-адреса.

IPv4ToIPv6(x)

Интерпретирует 32-битное число x (тип UInt32) в порядке big-endian как IPv4-адрес и преобразует его в соответствующий IPv6-адрес в двоичном формате (тип FixedString(16)).

IPv6CIDRToRange(ipv6, cidr)

Принимает IPv6-адрес ipv6 (тип IPv6 или String) и длину префикса cidr (тип UInt8), и возвращает кортеж из двух IPv6-адресов, представляющих первый и последний адреса в заданной подсети.

IPv6NumToString(x)
INET6_NTOA(x)

Преобразует IPv6-адрес x из двоичного формата (тип FixedString(16) или IPv6) в текстовый формат. IPv4-отображенные IPv6-адреса представляются в формате ::ffff:111.222.33.44.

IPv6StringToNum(string)
INET6_ATON(string)

Принимает строку string и преобразует её в IPv6-адрес в двоичном формате (FixedString(16)). Обратная функция к IPv6NumToString. В случае неверного формата IPv6-адреса генерирует исключение. Если входная строка содержит допустимый IPv4-адрес, возвращает его IPv6-эквивалент. HEX-значения могут быть в верхнем или нижнем регистре.

IPv6StringToNumOrDefault(string)

Аналогично IPv6StringToNum, но возвращает значение по умолчанию :: (FixedString(16), заполненная нулями) при неверном формате string.

IPv6StringToNumOrNull(string)

Аналогично IPv6StringToNum, но возвращает null при неверном формате string.

isIPAddressInRange(address, prefix)

Определяет, содержится ли IP-адрес address (тип String) в сети, заданной сетевым префиксом prefix (тип String) в CIDR-нотации. Возвращает 1, если версия IP-адреса и CIDR-префикса совпадают и адрес входит в диапазон, иначе 0.

isIPv4String(string)

Проверяет, является ли входная строка string валидным IPv4-адресом. Возвращает 1, если является, иначе — 0.

isIPv6String(string)

Проверяет, является ли входная строка string валидным IPv6-адресом. Возвращает 1, если является, иначе — 0.

toIPv4(x)

Преобразует строку или беззнаковое целочисленное значение x (тип String или UInt8/16/32), представляющее IPv4-адрес, в тип данных IPv4. Аналогично IPv4StringToNum и IPv4NumToString.

toIPv4OrDefault(string[, default])

Преобразует строку string в тип IPv4. Если строка не является корректным IPv4-адресом, возвращает 0.0.0.0 или указанное значение default (тип IPv4), если оно задано.

toIPv4OrNull(x)

Аналогично toIPv4, но возвращает null вместо генерации исключения при ошибках преобразования x.

toIPv4OrZero(x)

Аналогично toIPv4, но возвращает нулевой IPv4-адрес (0.0.0.0) вместо генерации исключения при ошибках преобразования x.

toIPv6(x)

Преобразует строку или целочисленное значение x (тип String или UInt128), представляющее IP-адрес, в тип IPv6. Если во входной строке содержится корректный IPv4-адрес, возвращается его IPv6-эквивалент. В случае некорректного формата генерирует исключение.

toIPv6OrDefault(string[, default])

Преобразует строку string в тип IPv6. Если строка имеет некорректный формат, возвращает :: (нулевой IPv6-адрес) или указанное значение default (тип IPv6), если оно задано.

toIPv6OrNull(x)

Аналогично toIPv6, но возвращает null вместо генерации исключения при ошибках преобразования x.

toIPv6OrZero(x)

Аналогично toIPv6, но возвращает нулевой IPv6-адрес (::) вместо генерации исключения при ошибках преобразования x.

Была ли полезна эта страница?

Обратная связь