Bằng cách sử dụng các hàm của MySQL INET_ATON()
và INET_NTOA()
bạn có thể chuyển đổi một cách đáng tin cậy địa chỉ IPv4 đến có các số không ở đầu thành cùng một chuỗi mà không có số 0 ở đầu. Wrap INET_ATON()
với INET_NTOA()
để chuyển đổi địa chỉ IP đầu tiên thành giá trị số nguyên của nó, sau đó quay lại một phần tư có dấu chấm.
IP có các số 0 ở đầu ở các vị trí khác nhau:
mysql> SELECT INET_NTOA(INET_ATON('001.110.011.111'));
+-----------------------------------------+
| INET_NTOA(INET_ATON('001.110.011.111')) |
+-----------------------------------------+
| 1.110.11.111 |
+-----------------------------------------+
Và không có số 0 ở đầu để so sánh:
mysql> SELECT INET_NTOA(INET_ATON('1.110.11.111'));
+--------------------------------------+
| INET_NTOA(INET_ATON('1.110.11.111')) |
+--------------------------------------+
| 1.110.11.111 |
+--------------------------------------+
Lưu ý: Điều này sẽ trả về NULL
nếu địa chỉ IP đầu vào không phải là địa chỉ hợp lệ. Nó sẽ không trả về chuỗi ban đầu hoặc dải số 0 ở đầu từ một địa chỉ IP không hợp lệ:
Địa chỉ IP bị lỗi với các số 0 ở đầu:
mysql> SELECT INET_NTOA(INET_ATON('888.777.123.123'));
+-----------------------------------------+
| INET_NTOA(INET_ATON('888.007.123.123')) |
+-----------------------------------------+
| NULL |
+-----------------------------------------+