ควรใช้ INT UNSIGNED (4 ไบต์) ร่วมกับฟังก์ชัน INET_ATON() (แปลง IP เป็นตัวเลข) และ INET_NTOA() (แปลงตัวเลขกลับเป็น IP)
สร้างตาราง
mysql> CREATE TABLE IPV4AddressDemo (
-> IPV4Address INT UNSIGNED
-> );
Insert IP Address
mysql> INSERT INTO IPV4AddressDemo VALUES (INET_ATON('120.0.0.1'));
เก็บเป็นตัวเลข:
+-------------+ | IPV4Address | +-------------+ | 2013265921 | +-------------+
Select กลับเป็น IP Format
mysql> SELECT INET_NTOA(IPV4Address) FROM IPV4AddressDemo;
+--------------------------+ | INET_NTOA(IPV4Address) | +--------------------------+ | 120.0.0.1 | +--------------------------+
สำหรับ IPv6
ใช้ VARBINARY(16) ร่วมกับ INET6_ATON() และ INET6_NTOA() เนื่องจาก IPv6 ใหญ่กว่า 32-bit
ข้อดี: ใช้พื้นที่น้อย (4 ไบต์ต่อ IP) ค้นหา/จัด Index เร็วกว่า VARCHAR(15) และสามารถคำนวณ Range (BETWEEN) ได้ง่าย