IPV4_STRING_TO_NUM
Описание
Принимает строку с IPv4-адресом в формате A.B.C.D (десятичные числа, разделённые точками). Возвращает числовое значение соответствующего IPv4-адреса с сетевым порядком байтов (big endian).
Синтаксис
IPV4_STRING_TO_NUM(<ipv4_string>)
Параметры
<ipv4_string>: IPv4-адрес в виде строки (формат A.B.C.D)
Возвращаемое значение
Тип возвращаемого значения: BIGINT
Значение результата:
- Возвращает числовое значение соответствующего IPv4-адреса в виде целого числа с сетевым порядком байтов (big endian)
- Вызывает исключение при недопустимой строке IPv4 или входном значении
NULL
Примечания по использованию
- Поддерживает только стандартное текстовое представление IPv4; CIDR (например,
/24), порты (например,:80) и другие расширенные форматы не поддерживаются - Не выполняет неявное удаление пробельных символов или преобразование типов; строки с пробельными символами в начале или конце считаются недопустимыми
- Часто используется совместно с
inet_ntoa,to_ipv4для взаимного преобразования
Примеры
Преобразование текстового представления IPv4 192.168.0.1 в соответствующее числовое значение в виде целого числа с сетевым порядком байтов (big endian).
select ipv4_string_to_num('192.168.0.1');
+-----------------------------------+
| ipv4_string_to_num('192.168.0.1') |
+-----------------------------------+
| 3232235521 |
+-----------------------------------+
Граничные значения IPv4 (минимальное и максимальное).
select
ipv4_string_to_num('0.0.0.0') as min_v4,
ipv4_string_to_num('255.255.255.255') as max_v4;
+--------+-----------+
| min_v4| max_v4 |
+--------+-----------+
| 0 | 4294967295|
+--------+-----------+
Недопустимые входные данные вызывают исключения (значение сегмента вне допустимого диапазона/наличие пробельных символов/NULL).
select ipv4_string_to_num('256.0.0.1');
ERROR 1105 (HY000): errCode = 2, detailMessage = (...)[INVALID_ARGUMENT]Invalid IPv4 value
select ipv4_string_to_num(' 1.1.1.1 ');
ERROR 1105 (HY000): errCode = 2, detailMessage = (...)[INVALID_ARGUMENT]Invalid IPv4 value
select ipv4_string_to_num(NULL);
ERROR 1105 (HY000): errCode = 2, detailMessage = (...)[INVALID_ARGUMENT]Null Input, you may consider convert it to a valid default IPv4 value like '0.0.0.0' first
Примеры взаимного преобразования с помощью inet_ntoa/ipv4_num_to_string и to_ipv4: текстовое представление IPv4 → целое число → текстовое представление IPv4 → тип IPv4.
-- Step 1: IPv4 text to integer
SELECT ipv4_string_to_num('192.168.1.1') as ipv4_int;
+------------+
| ipv4_int |
+------------+
| 3232235777 |
+------------+
-- Step 2: Integer back to IPv4 text
SELECT ipv4_num_to_string(ipv4_string_to_num('192.168.1.1')) as back_to_text;
+----------------+
| back_to_text |
+----------------+
| 192.168.1.1 |
+----------------+
-- Step 3: IPv4 text to IPv4 type
SELECT to_ipv4(ipv4_num_to_string(ipv4_string_to_num('192.168.1.1'))) as ipv4_type;
+-------------+
| ipv4_type |
+-------------+
| 192.168.1.1 |
+-------------+
Ключевые слова
IPV4_STRING_TO_NUM