Перейти к основному содержимому
Перейти к основному содержимому

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

IPv4CIDRToRange

Представлено в: v20.1

Принимает IPv4 адрес с его префиксом длины Classless Inter-Domain Routing (CIDR) и возвращает диапазон адресов подсети в виде кортежа из двух значений IPv4: первого и последнего адресов в этой подсети. Для версии IPv6 см. IPv6CIDRToRange.

Синтаксис

IPv4CIDRToRange(ipv4, cidr)

Аргументы

  • ipv4 — IPv4 адрес. IPv4 или String
  • cidr — значение CIDR. UInt8

Возвращаемое значение

Возвращает кортеж из двух 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

Преобразует 32-битное целое число в его строковое представление IPv4 адреса в десятичной точечной нотации (формат A.B.C.D). Интерпретирует входные данные с использованием порядка байтов big-endian.

Синтаксис

IPv4NumToString(num)

Аргументы

  • num — IPv4 адрес в виде числа UInt32. UInt32

Возвращаемое значение

Возвращает число, представляющее MAC адрес, или 0, если формат недопустим. String

Примеры

Пример использования

IPv4NumToString(3232235521)
192.168.0.1

IPv4NumToStringClassC

Представлено в: v1.1

Преобразует 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 test.hits
GROUP BY k
ORDER BY c DESC
LIMIT 10
┌─k──────────────┬─────c─┐
│ 83.149.9.xxx   │ 26238 │
│ 217.118.81.xxx │ 26074 │
│ 213.87.129.xxx │ 25481 │
│ 83.149.8.xxx   │ 24984 │
│ 217.118.83.xxx │ 22797 │
│ 78.25.120.xxx  │ 22354 │
│ 213.87.131.xxx │ 21285 │
│ 78.25.121.xxx  │ 20887 │
│ 188.162.65.xxx │ 19694 │
│ 83.149.48.xxx  │ 17406 │
└────────────────┴───────┘

IPv4StringToNum

Представлено в: v1.1

Преобразует строку IPv4 адреса в десятичной точечной нотации (формат A.B.C.D) в соответствующее 32-битное целое число. (Обратная операция к IPv4NumToString). Если формат IPv4 адреса недопустим, возникает исключение.

Синтаксис

IPv4StringToNum(string)

Аргументы

  • string — строка IPv4 адреса. String

Возвращаемое значение

Возвращает IPv4 адрес. UInt32

Примеры

Пример использования

IPv4StringToNum('192.168.0.1')
3232235521

IPv4StringToNumOrDefault

Представлено в: v22.3

Преобразует строку 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

Преобразует 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

Интерпретирует 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

Принимает IPv6 адрес с его префиксом длины Classless Inter-Domain Routing (CIDR) и возвращает диапазон адресов подсети в виде кортежа из двух значений IPv6: наименьшего и наибольшего адресов в этой подсети. Для версии IPv4 см. IPv4CIDRToRange.

Синтаксис

IPv6CIDRToRange(ipv6, cidr)

Аргументы

  • ipv6 — IPv6 адрес. IPv6 или String
  • cidr — значение CIDR. UInt8

Возвращаемое значение

Возвращает кортеж из двух 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

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

Синтаксис

IPv6NumToString(x)

Аргументы

Возвращаемое значение

Возвращает строку IPv6 адреса в текстовом формате. String

Примеры

Пример использования

SELECT IPv6NumToString(toFixedString(unhex('2A0206B8000000000000000000000011'), 16)) AS addr;
┌─addr─────────┐
│ 2a02:6b8::11 │
└──────────────┘

Анализ IPv6 с попаданиями

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
LIMIT 10
┌─IPv6NumToString(ClientIP6)──────────────┬─────c─┐
│ 2a02:2168:aaa:bbbb::2                   │ 24695 │
│ 2a02:2698:abcd:abcd:abcd:abcd:8888:5555 │ 22408 │
│ 2a02:6b8:0:fff::ff                      │ 16389 │
│ 2a01:4f8:111:6666::2                    │ 16016 │
│ 2a02:2168:888:222::1                    │ 15896 │
│ 2a01:7e00::ffff:ffff:ffff:222           │ 14774 │
│ 2a02:8109:eee:ee:eeee:eeee:eeee:eeee    │ 14443 │
│ 2a02:810b:8888:888:8888:8888:8888:8888  │ 14345 │
│ 2a02:6b8:0:444:4444:4444:4444:4444      │ 14279 │
│ 2a01:7e00::ffff:ffff:ffff:ffff          │ 13880 │
└─────────────────────────────────────────┴───────┘

IPv6 специализированные адреса IPv4

SELECT
    IPv6NumToString(ClientIP6 AS k),
    count() AS c
FROM hits_all
WHERE EventDate = today()
GROUP BY k
ORDER BY c DESC
LIMIT 10
┌─IPv6NumToString(ClientIP6)─┬──────c─┐
│ ::ffff:94.26.111.111       │ 747440 │
│ ::ffff:37.143.222.4        │ 529483 │
│ ::ffff:5.166.111.99        │ 317707 │
│ ::ffff:46.38.11.77         │ 263086 │
│ ::ffff:79.105.111.111      │ 186611 │
│ ::ffff:93.92.111.88        │ 176773 │
│ ::ffff:84.53.111.33        │ 158709 │
│ ::ffff:217.118.11.22       │ 154004 │
│ ::ffff:217.118.11.33       │ 148449 │
│ ::ffff:217.118.11.44       │ 148243 │
└────────────────────────────┴────────┘

IPv6StringToNum

Представлено в: v1.1

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

Если входная строка содержит допустимый IPv4 адрес, возвращает его эквивалент IPv6. HEX может быть в верхнем или нижнем регистре.

Синтаксис

IPv6StringToNum(string)

Аргументы

  • string — строка IPv6 адреса. String

Возвращаемое значение

Возвращает IPv6 адрес в двоичном формате. FixedString(16)

Примеры

Основной пример

SELECT addr, cutIPv6(IPv6StringToNum(addr), 0, 0) FROM (SELECT ['notaddress', '127.0.0.1', '1111::ffff'] AS addr) ARRAY JOIN addr;
┌─addr───────┬─cutIPv6(IPv6StringToNum(addr), 0, 0)─┐
│ notaddress │ ::                                   │
│ 127.0.0.1  │ ::ffff:127.0.0.1                     │
│ 1111::ffff │ 1111::ffff                           │
└────────────┴──────────────────────────────────────┘

IPv6StringToNumOrDefault

Представлено в: v22.3

Преобразует 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

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

Синтаксис

IPv6StringToNumOrNull(string)

Аргументы

  • string — строка IPv6 адреса. String

Возвращаемое значение

Возвращает IP адрес 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

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

Синтаксис

cutIPv6(x, bytesToCutForIPv6, bytesToCutForIPv4)

Аргументы

  • x — IPv6 адрес в двоичном формате. FixedString(16) или IPv6
  • bytesToCutForIPv6 — количество байтов для удаления для IPv6. UInt8
  • bytesToCutForIPv4 — количество байтов для удаления для 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

Определяет, содержится ли IP адрес в сети, представленном в нотации Classless Inter-Domain Routing (CIDR).

Эта функция принимает как IPv4, так и IPv6 адреса (и сети), представленные в виде строк. Она возвращает 0, если версия IP адреса и CIDR не совпадают.

Синтаксис

isIPAddressInRange(address, prefix)

Аргументы

  • address — IPv4 или IPv6 адрес. String
  • prefix — Префикс сети IPv4 или IPv6 в CIDR. String

Возвращаемое значение

Возвращает 1, если версия IP адреса и CIDR совпадают, в противном случае 0. UInt8

Примеры

IPv4 адрес в диапазоне

SELECT isIPAddressInRange('127.0.0.1', '127.0.0.0/8')
1

IPv4 адрес вне диапазона

SELECT isIPAddressInRange('127.0.0.1', 'ffff::/16')
0

IPv6 адрес вне диапазона

SELECT isIPAddressInRange('::ffff:192.168.0.1', '::ffff:192.168.0.4/128')
0

isIPv4String

Представлено в: v21.1

Определяет, является ли входная строка 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

Определяет, является ли входная строка 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

Преобразует строку или UInt32 в адрес IPv4. Это подобно функциям IPv4StringToNum и IPv4NumToString, но поддерживает как строковые, так и беззнаковые целые типы данных в качестве входных аргументов.

Синтаксис

toIPv4(x)

Аргументы

Возвращаемое значение

Возвращает адрес 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

Преобразует строку или UInt32 в адрес типа IPv4. Если формат IPv4 адреса недопустим, возвращает 0.0.0.0 (0 IPv4) или предоставленный адрес IPv4 по умолчанию.

Синтаксис

toIPv4OrDefault(string[, default])

Аргументы

  • string — строка IP адреса для преобразования. String
  • default — Необязательный. Значение, которое будет возвращено, если строка является недопустимым 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

Преобразует входное значение в значение типа IPv4, но возвращает NULL в случае ошибки. Похож на toIPv4, но возвращает NULL вместо выбрасывания исключения при ошибках преобразования.

Поддерживаемые аргументы:

  • Строковые представления IPv4 адресов в десятичной точечной нотации.
  • Целочисленные представления IPv4 адресов.

Не поддерживаемые аргументы (возвращают NULL):

  • Неверные форматы IP адресов.
  • IPv6 адреса.
  • Значения вне диапазона.
  • Неправильные адреса.

Синтаксис

toIPv4OrNull(x)

Аргументы

  • x — строковое или целочисленное представление IPv4 адреса. String или Integer

Возвращаемое значение

Возвращает адрес 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

Преобразует входное значение в значение типа IPv4, но возвращает нулевой IPv4 адрес в случае ошибки. Похож на toIPv4, но возвращает нулевой IPv4 адрес (0.0.0.0) вместо выбрасывания исключения при ошибках преобразования.

Поддерживаемые аргументы:

  • Строковые представления IPv4 адресов в десятичной точечной нотации.
  • Целочисленные представления IPv4 адресов.

Не поддерживаемые аргументы (возвращают нулевой IPv4):

  • Неверные форматы IP адресов.
  • IPv6 адреса.
  • Значения вне диапазона.

Синтаксис

toIPv4OrZero(x)

Аргументы

  • x — строковое или целочисленное представление IPv4 адреса. String или Integer

Возвращаемое значение

Возвращает адрес 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

Преобразует строку или форму UInt128 адреса IPv6 в тип IPv6. Для строк, если формат IPv6 адреса недопустим, возвращает пустое значение. Похоже на функции IPv6StringToNum и IPv6NumToString, которые преобразуют IPv6 адрес в двоичный формат и обратно (т.е. FixedString(16)).

Если входная строка содержит допустимый IPv4 адрес, то возвращается эквивалент IPv6 адреса для IPv4.

Синтаксис

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

Преобразует строку или форму UInt128 адреса IPv6 в тип IPv6. Если формат IPv6 адреса недопустим, возвращает :: (0 IPv6) или предоставленный 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

Преобразует входное значение в значение типа IPv6, но возвращает NULL в случае ошибки. Похож на toIPv6, но возвращает NULL вместо выбрасывания исключения при ошибках преобразования.

Поддерживаемые аргументы:

  • Строковые представления IPv6 адресов в стандартной нотации.
  • Строковые представления IPv4 адресов (преобразованные в IPv4-специализированные адреса 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

Преобразует входное значение в значение типа IPv6, но возвращает нулевой IPv6 адрес в случае ошибки. Похож на toIPv6, но возвращает нулевой IPv6 адрес (::) вместо выбрасывания исключения при ошибках преобразования.

Поддерживаемые аргументы:

  • Строковые представления IPv6 адресов в стандартной нотации.
  • Строковые представления IPv4 адресов (преобразованные в IPv4-специализированные адреса 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        │ ::           │
└─────────────────────────────────────┴──────────────┘