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

IPV6_STRING_TO_NUM

Описание​

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

Синтаксис​

IPV6_STRING_TO_NUM(<ipv6_string>)

Параметры​

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

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

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

Смысл возвращаемого значения:

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

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

  • Поддерживает стандартную текстовую запись IPv6 (в том числе сокращённые формы и формы с пропущенными группами, обозначенными ::)
  • Если на вход подана корректная текстовая запись IPv4, преобразует её в представление IPv4-Mapped для IPv6 и возвращает результат
  • Не поддерживает расширенные формы записи, такие как CIDR, порты, квадратные скобки и т. д.

Примеры​

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

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

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

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

Входное значение NULL вызывает исключение

select hex(ipv6_string_to_num(NULL));
ERROR 1105 (HY000): errCode = 2, detailMessage = (...)[INVALID_ARGUMENT]Null Input, you may consider convert it to a valid default IPv6 value like '::' first

Некорректное входное значение вызывает исключение.

select hex(ipv6_string_to_num('notaaddress'));
ERROR 1105 (HY000): errCode = 2, detailMessage = (...)[INVALID_ARGUMENT]Invalid IPv6 value

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

IPV6_STRING_TO_NUM