[DaTaBaSe] IP 주소 저장시 효율적인 방법
IP 주소를 데이터베이스에 저장시 그대로 저장 하는것 보다는 효율적이라고 하여 변경 하여 저장.
암호화 같은 것이 아닌, varchar 가 아닌 unsigned int 나 number 형식을 이용 하여 효율을 높이는 형태.
-- MySQL : IP -> 숫자
SQL> SELECT INET_ATON('192.168.0.111') AS IP_NUM;
결과 : 3232235631
-- MySQL : 숫자 -> IP
SQL> SELECT INET_NTOA(3232235631) AS IP_STR;
결과 : 192.168.0.111
-- Oracle : IP -> 숫자
SQL> SELECT REGEXP_SUBSTR(IP_ADDR, '[^.]+', 1, 1) * 256 * 256 * 256
+ REGEXP_SUBSTR(IP_ADDR, '[^.]+', 1, 2) * 256 * 256
+ REGEXP_SUBSTR(IP_ADDR, '[^.]+', 1, 3) * 256
+ REGEXP_SUBSTR(IP_ADDR, '[^.]+', 1, 4) AS IP_NUM
FROM (SELECT '192.168.0.111' AS IP_ADDR FROM DUAL);
결과 : 3232235631
-- Oracle : 숫자 -> IP
SQL> SELECT FLOOR(IP_NUM/256/256/256)
|| '.' || FLOOR(MOD(IP_NUM, 256*256*256)/256/256)
|| '.' || FLOOR(MOD(IP_NUM, 256*256)/256)
|| '.' || MOD(IP_NUM, 256) AS IP_STR
FROM (SELECT 3232235631 AS IP_NUM FROM DUAL);
결과 : 192.168.0.111