본문 바로가기
DataBase/MySQL

[MySQL] INET_ATON 및 INET_NTOA 함수를 이용하는 방법

by 선인장 🌵 2024. 2. 7.
728x90
728x90

INET_ATON 및 INET_NTOA 함수를 이용하는 방법

개발을 진행하면서 IP 주소 데이터에 대해서 MySQL을 이용하여 저장하고 검색을 하는 경우 IP 주소 데이터를 그대로 사용할 수 있지만 MySQL에서 제공하는 INET_ATON 및 INET_NTOA 함수를 활용하는 것이 더 많은 장점을 제공한다.

그렇다면 이 함수들을 어떻게 사용하는지에 대해서 한번 알아보도록 하자.

[MySQL] INET_ATON 및 INET_NTOA 함수를 이용하는 방법

728x90

1. INET_ATON 함수

INET_ATON 함수는 IP 주소를 숫자로 변환을 한다.

예를 들어 "1.1.1.1"이라는 IP 주소에 대해서 숫자로 변환을 하면 "16843009"이 된다. 

# INET_ATON Example

mysql> SELECT INET_ATON('1.1.1.1');
+----------------------+
| INET_ATON('1.1.1.1') |
+----------------------+
|             16843009 |
+----------------------+

INET_ATON 함수를 사용하는 이유는 여러 가지가 있다. 

1.1 저장 공간의 절약

IP 주소를 그대로 입력하여 사용하는 경우 텍스트 형태로 CHAR 또는 VARCHAR를 사용해야 한다.

그러나 INET_ATON 함수를 이용하면 IP 주소를 숫자 형태인 INTEGER로 변환하여 저장할 수 있다.

이로써 MySQL에 좀 더 적은 저장 공간을 사용할 수 있다. 

1.2 효율적인 검색, 비교, 정렬

숫자로 된 IP주소는 텍스트보다 검색 및 비교가 훨씬 빠르며, 정렬이 쉽다.

검색 시에도 들어오는 데이터를 먼저 INET_ATON 함수를 사용하여 숫자로 변환해야 하지만, 그래도 숫자 간의 비교가 텍스트보다 효율적이다. 

또한, 데이터가 숫자로 저장되기 때문에 범위 기반의 조건 검색도 효율적으로 수행할 수 있다. 

728x90

2. INET_NTOA 함수

INET_NTOA 함수는 INET_ATON 함수와 반대로 숫자를 IP 주소로 변환을 한다.

예를 들어 "16843009"로 변환된 숫자를 변환을 하면 "1.1.1.1" IP 주소가 된다.

# INET_NTOA Example

mysql> SELECT INET_NTOA(16843009);
+---------------------+
| INET_NTOA(16843009) |
+---------------------+
| 1.1.1.1             |
+---------------------+

INET_NTOA 함수는 숫자로 작성된 데이터를 익숙한 IP 주소 형태로 변환하여 가독성을 높일 수 있다.

INET_ATON 함수를 사용하여 MySQL에 저장한 데이터를 조회할 때 INET_NTOA 함수를 활용하여 데이터를 익숙한 IP 주소 형태로 변환할 수 있다.

이를 통해 저장된 데이터를 사용할 때 숫자로 저장된 IP 주소를 텍스트 형태로 변환함으로써 사용자는 더 직관적으로 데이터를 이해하고 활용할 수 있을 것이다.

3. 참고 문서

 

MySQL :: MySQL 8.0 Reference Manual :: 14.23 Miscellaneous Functions

MySQL 8.0 Reference Manual  /  Functions and Operators  /  Miscellaneous Functions 14.23 Miscellaneous Functions Table 14.33 Miscellaneous Functions Name Description ANY_VALUE() Suppress ONLY_FULL_GROUP_BY value rejection BIN_TO_UUID() Convert binar

dev.mysql.com

 

728x90
728x90


🌵댓글

 

loading