Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

Data Type ที่ควรใช้เก็บ IP Address ใน MySQL

ควรใช้ 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) ได้ง่าย