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

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

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

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

IPv4NumToString(num)

Принимает число UInt32, интерпретирует его как IPv4-адрес в big-endian и возвращает строку с соответствующим IPv4-адресом в формате A.B.C.D.

IPv4StringToNum(s)

Обратная функция к IPv4NumToString. В случае неверного формата IPv4-адреса генерирует исключение.

IPv4StringToNumOrDefault(s)

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

IPv4StringToNumOrNull(s)

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

IPv4NumToStringClassC(num)

Похожа на IPv4NumToString, но заменяет последний октет на xxx.

IPv6NumToString(x)

Принимает значение FixedString(16), содержащее IPv6-адрес в бинарном формате, и возвращает строку с этим адресом в текстовом формате.

IPv6StringToNum(s)

Обратная функция к IPv6NumToString. В случае неверного формата IPv6-адреса генерирует исключение.

IPv6StringToNumOrDefault(s)

Аналогично IPv6StringToNum, но возвращает 0 при неверном формате IPv6-адреса.

IPv6StringToNumOrNull(s)

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

IPv4ToIPv6(x)

Принимает число UInt32, интерпретирует его как IPv4-адрес в big-endian и возвращает значение FixedString(16), содержащее IPv6-адрес в бинарном формате.

cutIPv6(x, bytesToCutForIPv6, bytesToCutForIPv4)

Принимает значение FixedString(16), содержащее IPv6-адрес в бинарном формате, и возвращает строку с адресом с убранным указанным количеством байт.

IPv4CIDRToRange(ipv4, Cidr)

Принимает IPv4 и значение UInt8, содержащее CIDR, и возвращает кортеж из двух IPv4, содержащих нижний и верхний диапазон сети.

IPv6CIDRToRange(ipv6, Cidr)

Принимает IPv6 и значение UInt8, содержащее CIDR, и возвращает кортеж из двух IPv6, содержащих нижний и верхний диапазон сети.

toIPv4(string)

Является псевдонимом`IPv4StringToNum(), принимает строковую форму IPv4-адреса и возвращает значение типа IPv4, бинарно равное значению, возвращаемому `IPv4StringToNum().

toIPv4OrDefault(string)

Аналогично toIPv4, но возвращает 0.0.0.0 (IPv4 типа 0) при неверном формате IPv4-адреса.

toIPv4OrNull(string)

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

toIPv6(string)

Конвертирует строковую форму IPv6-адреса в тип IPv6. В случае неверного формата IPv6-адреса возвращает пустое значение.

toIPv6OrDefault(string)

Аналогично toIPv6, но возвращает :: (IPv6 типа 0) при неверном формате IPv6-адреса.

toIPv6OrNull(string)

Аналогично toIPv6, но возвращает null при неверном формате IPv6-адреса.

isIPv4String

Определяет, является ли входная строка IPv4-адресом. Возвращает 1, если строка является IPv4-адресом, и 0 в противном случае.

isIPv6String

Определяет, является ли входная строка IPv6-адресом. Возвращает 1, если строка является IPv6-адресом, и 0 в противном случае.

isIPAddressInRange

Определяет, содержится ли IP-адрес в сети, представленной в нотации CIDR. Возвращает 1, если это так, и 0 в противном случае.