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

IPV6_STRING_TO_NUM_OR_DEFAULT

Описание​

Функция, обратная IPV6_NUM_TO_STRING: принимает строку с IP-адресом и возвращает IPv6-адрес в двоичном формате.

Синтаксис​

IPV6_STRING_TO_NUM_OR_DEFAULT(<ipv6_string>)

Параметры​

  • <ipv6_string>: IPv6-адрес строкового типа

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

Тип возвращаемого значения: VARCHAR (16-байтовое двоичное значение)

Описание возвращаемого значения:

  • Возвращает 16-байтовое двоичное представление IPv6-адреса
  • Если входное значение равно NULL, возвращает 16-байтовое двоичное значение, заполненное нулями
  • Для некорректных IP-адресов возвращает 16-байтовое двоичное значение, заполненное нулями (исключение не возникает)
  • Если входное значение — корректный IPv4-адрес в текстовом виде, возвращает эквивалентный IPv6-адрес (::ffff:<ipv4>)

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

  • Эта функция не генерирует исключений: при любых некорректных входных данных возвращает 16-байтовое двоичное значение, заполненное нулями
  • Поддерживает сокращённую запись IPv6; IPv4-адреса в текстовом виде преобразуются в представление IPv6
  • Подходит для пакетного преобразования, устойчивого к ошибкам

Примеры​

Преобразование IPv6-адреса 1111::ffff из текстового вида в 16-байтовое двоичное значение (отображается в шестнадцатеричном виде).

select hex(ipv6_string_to_num_or_default('1111::ffff')) as v6;
+----------------------------------+
| v6 |
+----------------------------------+
| 1111000000000000000000000000FFFF |
+----------------------------------+

IPv4-адрес в текстовом виде автоматически преобразуется в IPv6 (::ffff:<ipv4>), а затем возвращается как 16-байтовое двоичное значение.

select hex(ipv6_string_to_num_or_default('192.168.0.1')) as mapped;
+----------------------------------+
| mapped |
+----------------------------------+
| 00000000000000000000FFFFC0A80001 |
+----------------------------------+

Если параметр равен NULL, возвращается 16-байтовое двоичное значение, заполненное нулями

select hex(ipv6_string_to_num_or_default(NULL)) as null_result;
+----------------------------------+
| null_result |
+----------------------------------+
| 00000000000000000000000000000000 |
+----------------------------------+

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

select hex(ipv6_string_to_num_or_default('notaaddress')) as invalid;
+----------------------------------+
| invalid |
+----------------------------------+
| 00000000000000000000000000000000 |
+----------------------------------+

Ключевые слова​

IPV6_STRING_TO_NUM_OR_DEFAULT