Summry
본 문서에서는 mysql에서 효율적으로 IP주소를 저장 및 조회하는 방법을 정리한다.
send me email if you have any questions.
보통 IP를 DB에 저장할 때는 char 형태의 컬럼(varchar 혹은 char)을 사용하기도 한다.
그러나 MySQL에서는 IP를 특화된 방법으로 저장하고 불러올 수 있다. 또한 저장 방법이 Integer방식이기 때문에 검색에서 더 효율적이다.
저장 및 조회
INET_ATON(expr)
일발적인 IPv4 네트워크 주소 방식으로 표현된 문자열로 주어지면 네트워크 바이트 순서(Big Endian)로 주소의 숫자 값을 나타내는 정수를 반환한다.
- 만약 입력된 IP주소 형식이 틀리거나 범위가 넘어가면 NULL을 반환한다.
mysql> insert into addr values(INET_ATON('192.168.0.1'));
Query OK, 1 row affected (0.00 sec)
mysql> select * from addr;
+------------+
| ip |
+------------+
| 3232235521 |
+------------+
1 row in set (0.00 sec)
INET_NTOA(expr)
INET_ATON 컬럼에 의해 저장된 숫자를 사람이 알아볼 수 있는 IP단위로 출력한다.
- 범위가 벗어나거나 펑션이 이해하지 못하는 숫자를 제시하면 NULL을 반환한다.
mysql> select INET_NTOA(ip) from addr;
+---------------+
| INET_NTOA(ip) |
+---------------+
| 192.168.0.1 |
+---------------+
1 row in set (0.00 sec)
Reference
PREVIOUS파일업로드, 파일명 중복제거