IPv4CIDRToRange
Добавленный в: v20.1.0
Принимает IPv4-адрес и длину его префикса Classless Inter-Domain Routing (CIDR), а возвращает диапазон адресов подсети в виде кортежа из двух значений IPv4: первого и последнего адресов этой подсети.
Версию для IPv6 см. в IPv6CIDRToRange.
Синтаксис
IPv4CIDRToRange(ipv4, cidr)Аргументы
Возвращаемое значение
Возвращает кортеж из двух адресов IPv4, представляющих диапазон подсети. Tuple(IPv4, IPv4)
Примеры
Пример использования
SELECT IPv4CIDRToRange(toIPv4('192.168.5.2'), 16);┌─IPv4CIDRToRange(toIPv4('192.168.5.2'), 16)─┐
│ ('192.168.0.0','192.168.255.255') │
└────────────────────────────────────────────┘IPv4NumToString
Добавленный в: v1.1.0
Преобразует 32-битное целое число в строковое представление IPv4-адреса в точечно-десятичной записи (формат A.B.C.D). Интерпретирует входное значение в порядке байтов big-endian.
Синтаксис
IPv4NumToString(num)Псевдонимы: INET_NTOA
Аргументы
num— IPv4-адрес в виде числа UInt32.UInt32
Возвращаемое значение
Возвращает число, представляющее MAC-адрес, или 0, если формат некорректен. String
Примеры
Пример использования
SELECT IPv4NumToString(3232235521)192.168.0.1IPv4NumToStringClassC
Добавленный в: v1.1.0
Преобразует 32-битное целое число в строковое представление IPv4-адреса в точечно-десятичной записи (формат A.B.C.D),
аналогично IPv4NumToString, но с использованием xxx вместо последнего октета.
Синтаксис
IPv4NumToStringClassC(num)Аргументы
num— IPv4-адрес в формате числа UInt32.UInt32
Возвращаемое значение
Возвращает строковое представление IPv4-адреса, в котором последний октет заменён на xxx. String
Примеры
Базовый пример с агрегацией
SELECT
IPv4NumToStringClassC(ClientIP) AS k,
count() AS c
FROM VALUES('ClientIP UInt32',
(toUInt32(toIPv4('83.149.9.10'))), (toUInt32(toIPv4('83.149.9.11'))), (toUInt32(toIPv4('83.149.9.12'))),
(toUInt32(toIPv4('217.118.81.5'))), (toUInt32(toIPv4('217.118.81.6'))),
(toUInt32(toIPv4('213.87.129.1'))))
GROUP BY k
ORDER BY c DESC, k┌─k──────────────┬─c─┐
│ 83.149.9.xxx │ 3 │
│ 217.118.81.xxx │ 2 │
│ 213.87.129.xxx │ 1 │
└────────────────┴───┘IPv4StringToNum
Добавленный в: v1.1.0
Преобразует строковое представление IPv4-адреса в точечно-десятичной записи (формат A.B.C.D) в соответствующее 32-битное целочисленное представление. (Обратная операция для IPv4NumToString).
Если IPv4-адрес имеет недопустимый формат, генерируется исключение.
Синтаксис
IPv4StringToNum(string)Псевдонимы: INET_ATON
Аргументы
string— строка IPv4-адреса.String
Возвращаемое значение
Возвращает IPv4-адрес. UInt32
Примеры
Пример использования
SELECT IPv4StringToNum('192.168.0.1')3232235521IPv4StringToNumOrDefault
Добавленный в: v22.3.0
Преобразует строку с IPv4-адресом в точечно-десятичной записи (формат A.B.C.D) в соответствующее 32-битное целое число; если формат IPv4-адреса недопустим, возвращает 0.
Синтаксис
IPv4StringToNumOrDefault(string)Аргументы
string— строка с IPv4-адресом.String
Возвращаемое значение
Возвращает IPv4-адрес или 0, если он некорректен. UInt32
Примеры
Пример с некорректным адресом
SELECT
IPv4StringToNumOrDefault('127.0.0.1') AS valid,
IPv4StringToNumOrDefault('invalid') AS invalid;┌──────valid─┬─invalid─┐
│ 2130706433 │ 0 │
└────────────┴─────────┘IPv4StringToNumOrNull
Добавленный в: v22.3.0
Преобразует 32-битное целое число в строковое представление IPv4-адреса в точечной десятичной записи (формат A.B.C.D); если IPv4-адрес имеет недопустимый формат, возвращает NULL.
Синтаксис
IPv4StringToNumOrNull(string)Аргументы
string— строка с IPv4-адресом.String
Возвращаемое значение
Возвращает IPv4-адрес или NULL, если адрес некорректен. Nullable(UInt32)
Примеры
Пример с некорректным адресом
SELECT
IPv4StringToNumOrNull('127.0.0.1') AS valid,
IPv4StringToNumOrNull('invalid') AS invalid;┌──────valid─┬─invalid─┐
│ 2130706433 │ ᴺᵁᴸᴸ │
└────────────┴─────────┘IPv4ToIPv6
Добавленный в: v1.1.0
Интерпретирует 32-битное число в формате big-endian как IPv4-адрес, который затем представляется как соответствующий IPv6-адрес в формате FixedString(16).
Синтаксис
IPv4ToIPv6(x)Аргументы
x— адрес IPv4.UInt32
Возвращаемое значение
Возвращает адрес IPv6 в двоичном формате. FixedString(16)
Примеры
Пример использования
SELECT IPv6NumToString(IPv4ToIPv6(IPv4StringToNum('192.168.0.1'))) AS addr;┌─addr───────────────┐
│ ::ffff:192.168.0.1 │
└────────────────────┘IPv6CIDRToRange
Добавленный в: v20.1.0
Принимает IPv6-адрес и длину его префикса CIDR (Classless Inter-Domain Routing) и возвращает диапазон адресов подсети в виде кортежа из двух IPv6-значений: наименьшего и наибольшего адресов этой подсети.
Версию для IPv4 см. в IPv4CIDRToRange.
Синтаксис
IPv6CIDRToRange(ipv6, cidr)Аргументы
Возвращаемое значение
Возвращает кортеж из двух адресов IPv6, задающих диапазон подсети. Tuple(IPv6, IPv6)
Примеры
Пример использования
SELECT IPv6CIDRToRange(toIPv6('2001:0db8:0000:85a3:0000:0000:ac1f:8001'), 32);┌─IPv6CIDRToRange(toIPv6('2001:0db8:0000:85a3:0000:0000:ac1f:8001'), 32)─┐
│ ('2001:db8::','2001:db8:ffff:ffff:ffff:ffff:ffff:ffff') │
└────────────────────────────────────────────────────────────────────────┘IPv6NumToString
Добавленный в: v1.1.0
Преобразует IPv6-адрес из двоичного формата (FixedString(16)) в стандартное текстовое представление.
IPv4-отображённые IPv6-адреса выводятся в формате ::ffff:111.222.33.44.
Синтаксис
IPv6NumToString(x)Псевдонимы: INET6_NTOA
Аргументы
x— IPv6-адрес в двоичном формате.FixedString(16)илиIPv6
Возвращаемое значение
Возвращает IPv6-адрес в виде строки в текстовом формате. String
Примеры
Пример использования
SELECT IPv6NumToString(toFixedString(unhex('2A0206B8000000000000000000000011'), 16)) AS addr;┌─addr─────────┐
│ 2a02:6b8::11 │
└──────────────┘IPv6 в анализе hits
CREATE TABLE hits_all (EventDate Date, ClientIP6 FixedString(16)) ENGINE = Memory;
INSERT INTO hits_all SELECT today(), IPv6StringToNum(addr) FROM VALUES('addr String',
('2a02:2168:aaa:bbbb::2'), ('2a02:2168:aaa:bbbb::2'), ('2a02:2168:aaa:bbbb::2'),
('2a02:6b8:0:fff::ff'), ('2a02:6b8:0:fff::ff'),
('::ffff:94.26.111.111'), ('::ffff:94.26.111.111'), ('::ffff:94.26.111.111'), ('::ffff:94.26.111.111'),
('::ffff:37.143.222.4'));
-- The addresses that are not an IPv4 address mapped into the IPv6 space.
SELECT
IPv6NumToString(ClientIP6 AS k),
count() AS c
FROM hits_all
WHERE EventDate = today() AND substring(ClientIP6, 1, 12) != unhex('00000000000000000000FFFF')
GROUP BY k
ORDER BY c DESC, k
LIMIT 10┌─IPv6NumToString(k)────┬─c─┐
│ 2a02:2168:aaa:bbbb::2 │ 3 │
│ 2a02:6b8:0:fff::ff │ 2 │
└───────────────────────┴───┘IPv4-адреса, сопоставленные с IPv6
-- Without the filter, the mapped IPv4 addresses show up as well.
SELECT
IPv6NumToString(ClientIP6 AS k),
count() AS c
FROM hits_all
WHERE EventDate = today()
GROUP BY k
ORDER BY c DESC, k
LIMIT 10┌─IPv6NumToString(k)────┬─c─┐
│ ::ffff:94.26.111.111 │ 4 │
│ 2a02:2168:aaa:bbbb::2 │ 3 │
│ 2a02:6b8:0:fff::ff │ 2 │
│ ::ffff:37.143.222.4 │ 1 │
└───────────────────────┴───┘IPv6StringToNum
Добавленный в: v1.1.0
Преобразует IPv6-адрес из стандартного текстового представления в двоичный формат (FixedString(16)).
Принимает IPv4-отображённые IPv6-адреса в формате ::ffff:111.222.33.44..
Если IPv6-адрес имеет недопустимый формат, генерируется исключение.
Если входная строка содержит корректный IPv4-адрес, возвращается его IPv6-эквивалент. HEX может быть записан в верхнем или нижнем регистре.
Синтаксис
IPv6StringToNum(string)Псевдонимы: INET6_ATON
Аргументы
string— строка с IPv6-адресом.String
Возвращаемое значение
Возвращает IPv6-адрес в двоичном формате. FixedString(16)
Примеры
Базовый пример
SELECT addr, cutIPv6(IPv6StringToNum(addr), 0, 0) FROM (SELECT ['127.0.0.1', '1111::ffff'] AS addr) ARRAY JOIN addr;┌─addr───────┬─cutIPv6(IPv6StringToNum(addr), 0, 0)─┐
│ 127.0.0.1 │ ::ffff:127.0.0.1 │
│ 1111::ffff │ 1111::ffff │
└────────────┴──────────────────────────────────────┘IPv6StringToNumOrDefault
Добавленный в: v22.3.0
Преобразует IPv6-адрес из стандартного текстового представления в двоичный формат (FixedString(16)).
Принимает IPv4-отображённые IPv6-адреса в формате ::ffff:111.222.33.44..
Если IPv6-адрес имеет недопустимый формат, возвращает значение по умолчанию ::.
Синтаксис
IPv6StringToNumOrDefault(string)Аргументы
string— строка с адресом IPv6.String
Возвращаемое значение
Адрес IPv6 в двоичном формате или FixedString(16), заполненная нулями, если адрес некорректен. FixedString(16)
Примеры
Базовый пример с некорректным адресом
SELECT
IPv6NumToString(IPv6StringToNumOrDefault('2001:db8::1')) AS valid,
IPv6NumToString(IPv6StringToNumOrDefault('invalid')) AS invalid;┌─valid───────┬─invalid─┐
│ 2001:db8::1 │ :: │
└─────────────┴─────────┘IPv6StringToNumOrNull
Добавленный в: v22.3.0
Преобразует IPv6-адрес из стандартного текстового представления в двоичный формат (FixedString(16)).
Принимает IPv4-отображённые IPv6-адреса в формате ::ffff:111.222.33.44..
Если IPv6-адрес имеет недопустимый формат, возвращает NULL.
Синтаксис
IPv6StringToNumOrNull(string)Аргументы
string— строка с IPv6-адресом.String
Возвращаемое значение
Возвращает IPv6-адрес в двоичном формате или NULL, если адрес недопустим. Nullable(FixedString(16))
Примеры
Базовый пример с недопустимым адресом
SELECT
IPv6NumToString(IPv6StringToNumOrNull('2001:db8::1')) AS valid,
IPv6StringToNumOrNull('invalid') AS invalid;┌─valid───────┬─invalid─┐
│ 2001:db8::1 │ ᴺᵁᴸᴸ │
└─────────────┴─────────┘cutIPv6
Добавленный в: v1.1.0
Принимает значение FixedString(16), содержащее IPv6-адрес в бинарном формате.
Возвращает строку с адресом в текстовом формате, у которого удалено указанное количество байтов.
Синтаксис
cutIPv6(x, bytesToCutForIPv6, bytesToCutForIPv4)Аргументы
x— IPv6-адрес в бинарном формате.FixedString(16)илиIPv6bytesToCutForIPv6— количество байтов, удаляемых из IPv6.UInt8bytesToCutForIPv4— количество байтов, удаляемых из IPv4.UInt8
Возвращаемое значение
Возвращает строку с адресом IPv6 в текстовом формате, из которого удалены указанные байты. String
Примеры
Пример использования
WITH
IPv6StringToNum('2001:0DB8:AC10:FE01:FEED:BABE:CAFE:F00D') AS ipv6,
IPv4ToIPv6(IPv4StringToNum('192.168.0.1')) AS ipv4
SELECT
cutIPv6(ipv6, 2, 0),
cutIPv6(ipv4, 0, 2)┌─cutIPv6(ipv6, 2, 0)─────────────────┬─cutIPv6(ipv4, 0, 2)─┐
│ 2001:db8:ac10:fe01:feed:babe:cafe:0 │ ::ffff:192.168.0.0 │
└─────────────────────────────────────┴─────────────────────┘isIPAddressInRange
Добавленный в: v21.4.0
Определяет, принадлежит ли IP-адрес сети, заданной в нотации Classless Inter-Domain Routing (CIDR).
Эта функция принимает как IPv4-, так и IPv6-адреса (и сети), представленные в виде строк. Она возвращает 0, если IP-версия адреса и CIDR не совпадают.
Синтаксис
isIPAddressInRange(address, prefix)Аргументы
address— IPv4- или IPv6-адрес.Stringprefix— Сетевой префикс IPv4 или IPv6 в нотации CIDR.String
Возвращаемое значение
Возвращает 1, если IP-версия адреса и CIDR совпадают, в противном случае — 0. UInt8
Примеры
IPv4-адрес в диапазоне
SELECT isIPAddressInRange('127.0.0.1', '127.0.0.0/8')1IPv4-адрес не входит в диапазон
SELECT isIPAddressInRange('127.0.0.1', 'ffff::/16')0IPv6-адрес не входит в диапазон
SELECT isIPAddressInRange('::ffff:192.168.0.1', '::ffff:192.168.0.4/128')0isIPv4String
Добавленный в: v21.1.0
Проверяет, является ли входная строка IPv4-адресом.
Версию для IPv6 см. в isIPv6String.
Синтаксис
isIPv4String(string)Аргументы
string— строка с IP-адресом для проверки.String
Возвращаемое значение
Возвращает 1, если string — IPv4-адрес, иначе 0. UInt8
Примеры
Пример использования
SELECT addr, isIPv4String(addr)
FROM(
SELECT ['0.0.0.0', '127.0.0.1', '::ffff:127.0.0.1'] AS addr
)
ARRAY JOIN addr;┌─addr─────────────┬─isIPv4String(addr)─┐
│ 0.0.0.0 │ 1 │
│ 127.0.0.1 │ 1 │
│ ::ffff:127.0.0.1 │ 0 │
└──────────────────┴────────────────────┘isIPv6String
Добавленный в: v21.1.0
Определяет, является ли входная строка IPv6-адресом.
Версию для IPv4 см. в isIPv4String.
Синтаксис
isIPv6String(string)Аргументы
string— строка с IP-адресом для проверки.String
Возвращаемое значение
Возвращает 1, если string — это IPv6-адрес, иначе 0. UInt8
Примеры
Пример использования
SELECT addr, isIPv6String(addr)
FROM(SELECT ['::', '1111::ffff', '::ffff:127.0.0.1', '127.0.0.1'] AS addr)
ARRAY JOIN addr;┌─addr─────────────┬─isIPv6String(addr)─┐
│ :: │ 1 │
│ 1111::ffff │ 1 │
│ ::ffff:127.0.0.1 │ 1 │
│ 127.0.0.1 │ 0 │
└──────────────────┴────────────────────┘toIPv4
Добавленный в: v20.1.0
Преобразует строку или IPv4-адрес в формате UInt32 в тип IPv4.
Эта функция похожа на IPv4StringToNum и IPv4NumToString, но в качестве входных аргументов поддерживает как строковые, так и беззнаковые целочисленные типы данных.
Синтаксис
toIPv4(x)Аргументы
x— IPv4-адресStringилиUInt8/16/32
Возвращаемое значение
Возвращает адрес IPv4. IPv4
Примеры
Пример использования
SELECT toIPv4('171.225.130.45');┌─toIPv4('171.225.130.45')─┐
│ 171.225.130.45 │
└──────────────────────────┘Сравнение с функциями IPv4StringToNum и IPv4NumToString.
WITH
'171.225.130.45' AS IPv4_string
SELECT
hex(IPv4StringToNum(IPv4_string)),
hex(toIPv4(IPv4_string))┌─hex(IPv4StringToNum(IPv4_string))─┬─hex(toIPv4(IPv4_string))─┐
│ ABE1822D │ ABE1822D │
└───────────────────────────────────┴──────────────────────────┘Преобразование из целого числа
SELECT toIPv4(2130706433);┌─toIPv4(2130706433)─┐
│ 127.0.0.1 │
└────────────────────┘toIPv4OrDefault
Добавлено в: v22.3.0
Преобразует строку или значение типа UInt32, представляющее IPv4-адрес, в тип IPv4.
Если IPv4-адрес имеет недопустимый формат, функция возвращает 0.0.0.0 (0 IPv4) или указанное значение IPv4 по умолчанию.
Синтаксис
toIPv4OrDefault(string[, default])Аргументы
string— строка IP-адреса для преобразования.Stringdefault— необязательный параметр. Значение, которое возвращается, если строка не является допустимым IPv4-адресом.IPv4
Возвращаемое значение
Возвращает строку, преобразованную в IPv4-адрес, или значение по умолчанию, если преобразование не удалось. IPv4
Примеры
Корректные и некорректные строки IPv4
WITH
'192.168.1.1' AS valid_IPv4_string,
'999.999.999.999' AS invalid_IPv4_string,
'not_an_ip' AS malformed_string
SELECT
toIPv4OrDefault(valid_IPv4_string) AS valid,
toIPv4OrDefault(invalid_IPv4_string) AS default_value,
toIPv4OrDefault(malformed_string, toIPv4('8.8.8.8')) AS provided_default;┌─valid───────┬─default_value─┬─provided_default─┐
│ 192.168.1.1 │ 0.0.0.0 │ 8.8.8.8 │
└─────────────┴───────────────┴──────────────────┘toIPv4OrNull
Добавленный в: v22.3.0
Преобразует входное значение в значение типа IPv4, но в случае ошибки возвращает NULL.
Как toIPv4, но при ошибках преобразования возвращает NULL вместо того, чтобы генерировать исключение.
Поддерживаемые аргументы:
- Строковые представления IPv4-адресов в точечной десятичной записи.
- Целочисленные представления IPv4-адресов.
Неподдерживаемые аргументы (возвращают NULL):
- Недопустимые форматы IP-адресов.
- IPv6-адреса.
- Значения вне допустимого диапазона.
- Неверно сформированные адреса.
Синтаксис
toIPv4OrNull(x)Аргументы
Возвращаемое значение
Возвращает IPv4-адрес в случае успеха, в противном случае — NULL. IPv4 или NULL
Примеры
Пример использования
SELECT
toIPv4OrNull('192.168.1.1') AS valid_ip,
toIPv4OrNull('invalid.ip') AS invalid_ip┌─valid_ip────┬─invalid_ip─┐
│ 192.168.1.1 │ ᴺᵁᴸᴸ │
└─────────────┴────────────┘toIPv4OrZero
Добавленный в: v23.1.0
Преобразует входное значение в значение типа IPv4, а в случае ошибки возвращает нулевой IPv4-адрес.
Аналогична toIPv4, но при ошибках преобразования возвращает нулевой IPv4-адрес (0.0.0.0) вместо того, чтобы генерировать исключение.
Поддерживаемые аргументы:
- Строковые представления IPv4-адресов в десятичной записи с точками.
- Целочисленные представления IPv4-адресов.
Неподдерживаемые аргументы (возвращают нулевой IPv4-адрес):
- Недопустимые форматы IP-адресов.
- IPv6-адреса.
- Значения вне допустимого диапазона.
Синтаксис
toIPv4OrZero(x)Аргументы
Возвращаемое значение
Возвращает IPv4-адрес в случае успеха, в противном случае — нулевой IPv4-адрес (0.0.0.0). IPv4
Примеры
Пример использования
SELECT
toIPv4OrZero('192.168.1.1') AS valid_ip,
toIPv4OrZero('invalid.ip') AS invalid_ip┌─valid_ip────┬─invalid_ip─┐
│ 192.168.1.1 │ 0.0.0.0 │
└─────────────┴────────────┘toIPv6
Добавленный в: v20.1.0
Преобразует строку или IPv6-адрес в формате UInt128 в тип IPv6.
Для строк, если IPv6-адрес имеет недопустимый формат, возвращает пустое значение.
Похожа на функции IPv6StringToNum и IPv6NumToString, которые преобразуют IPv6-адрес в бинарный формат и обратно (то есть FixedString(16)).
Если входная строка содержит корректный IPv4-адрес, возвращается его IPv6-эквивалент.
Синтаксис
toIPv6(x)Аргументы
Возвращаемое значение
Возвращает IPv6-адрес. IPv6
Примеры
Пример использования
WITH '2001:438:ffff::407d:1bc1' AS IPv6_string
SELECT
hex(IPv6StringToNum(IPv6_string)),
hex(toIPv6(IPv6_string));┌─hex(IPv6StringToNum(IPv6_string))─┬─hex(toIPv6(IPv6_string))─────────┐
│ 20010438FFFF000000000000407D1BC1 │ 20010438FFFF000000000000407D1BC1 │
└───────────────────────────────────┴──────────────────────────────────┘Отображение IPv4 в IPv6
SELECT toIPv6('127.0.0.1');┌─toIPv6('127.0.0.1')─┐
│ ::ffff:127.0.0.1 │
└─────────────────────┘toIPv6OrDefault
Добавленный в: v22.3.0
Преобразует строку или IPv6-адрес в виде UInt128 в тип IPv6.
Если IPv6-адрес имеет недопустимый формат, возвращает :: (IPv6-адрес 0) или указанный IPv6-адрес по умолчанию.
Синтаксис
toIPv6OrDefault(string[, default])Аргументы
string— строка IP-адреса для преобразования. -default— Необязательный параметр. Значение, которое будет возвращено, если строка имеет недопустимый формат.
Возвращаемое значение
Возвращает IPv6-адрес; в противном случае — :: или указанное необязательное значение по умолчанию, если аргумент string имеет недопустимый формат. IPv6
Примеры
Корректные и некорректные строки IPv6
WITH
'2001:0db8:85a3:0000:0000:8a2e:0370:7334' AS valid_IPv6_string,
'2001:0db8:85a3::8a2e:370g:7334' AS invalid_IPv6_string,
'not_an_ipv6' AS malformed_string
SELECT
toIPv6OrDefault(valid_IPv6_string) AS valid,
toIPv6OrDefault(invalid_IPv6_string) AS default_value,
toIPv6OrDefault(malformed_string, toIPv6('::1')) AS provided_default;┌─valid────────────────────────┬─default_value─┬─provided_default─┐
│ 2001:db8:85a3::8a2e:370:7334 │ :: │ ::1 │
└──────────────────────────────┴───────────────┴──────────────────┘toIPv6OrNull
Добавленный в: v22.3.0
Преобразует входное значение в значение типа IPv6, но при ошибке возвращает NULL.
Как toIPv6, но при ошибках преобразования возвращает NULL вместо того, чтобы генерировать исключение.
Поддерживаемые аргументы:
- Строковые представления IPv6-адресов в стандартной записи.
- Строковые представления IPv4-адресов (преобразуются в IPv4-mapped IPv6).
- Двоичные представления IPv6-адресов.
Неподдерживаемые аргументы (возвращается NULL):
- Недопустимые форматы IP-адресов.
- Некорректные IPv6-адреса.
- Значения вне допустимого диапазона.
- Недопустимая запись.
Синтаксис
toIPv6OrNull(x)Аргументы
x— строковое представление IPv6-адреса или IPv4-адреса.String
Возвращаемое значение
Возвращает IPv6-адрес в случае успеха, в противном случае — NULL. IPv6 или NULL
Примеры
Пример использования
SELECT
toIPv6OrNull('2001:0db8:85a3:0000:0000:8a2e:0370:7334') AS valid_ipv6,
toIPv6OrNull('invalid::ip') AS invalid_ipv6┌─valid_ipv6───────────────────┬─invalid_ipv6─┐
│ 2001:db8:85a3::8a2e:370:7334 │ ᴺᵁᴸᴸ │
└──────────────────────────────┴──────────────┘toIPv6OrZero
Добавленный в: v23.1.0
Преобразует входное значение в значение типа IPv6, но в случае ошибки возвращает нулевой IPv6-адрес.
Аналогично toIPv6, но при ошибках преобразования возвращает нулевой IPv6-адрес (::) вместо того, чтобы генерировать исключение.
Поддерживаемые аргументы:
- Строковые представления IPv6-адресов в стандартной записи.
- Строковые представления IPv4-адресов (преобразуются в IPv4-mapped IPv6).
- Двоичные представления IPv6-адресов.
Неподдерживаемые аргументы (возвращают нулевой IPv6-адрес):
- Недопустимые форматы IP-адресов.
- Некорректные IPv6-адреса.
- Значения вне допустимого диапазона.
Синтаксис
toIPv6OrZero(x)Аргументы
x— Строковое представление IPv6-адреса или IPv4-адреса.String
Возвращаемое значение
Возвращает IPv6-адрес в случае успеха, иначе — нулевой IPv6-адрес (::). IPv6
Примеры
Пример использования
SELECT
toIPv6OrZero('2001:0db8:85a3:0000:0000:8a2e:0370:7334') AS valid_ipv6,
toIPv6OrZero('invalid::ip') AS invalid_ipv6┌─valid_ipv6───────────────────┬─invalid_ipv6─┐
│ 2001:db8:85a3::8a2e:370:7334 │ :: │
└──────────────────────────────┴──────────────┘