MySQL में IP एड्रेस को सही क्रम में सॉर्ट करने के लिए, INET_ATON() फंक्शन का उपयोग करें। यह फंक्शन IP एड्रेस को संख्यात्मक मान में बदल देता है, जिससे सही संख्यात्मक क्रम में सॉर्टिंग संभव होती है।
टेबल बनाएं:
mysql> create table DemoTable (
-> IpAddress VARCHAR(50)
-> );
Query OK, 0 rows affected (1.36 sec)
रिकॉर्ड इन्सर्ट करें:
mysql> insert into DemoTable values('192.168.110.78');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('192.168.110.87');
Query OK, 1 row affected (0.27 sec)
mysql> insert into DemoTable values('192.168.110.75');
Query OK, 1 row affected (0.26 sec)
सभी रिकॉर्ड देखें (डिफ़ॉल्ट स्ट्रिंग सॉर्टिंग):
mysql> select * from DemoTable;
+----------------+ | IpAddress | +----------------+ | 192.168.110.78 | | 192.168.110.87 | | 192.168.110.75 | +----------------+ 3 rows in set (0.00 sec)
IP एड्रेस के अनुसार सही क्रम में ऑर्डर करने के लिए क्वेरी:
mysql> select * from DemoTable
-> ORDER BY INET_ATON(IpAddress);
परिणाम:
+----------------+ | IpAddress | +----------------+ | 192.168.110.75 | | 192.168.110.78 | | 192.168.110.87 | +----------------+ 3 rows in set (0.00 sec)
व्याख्या
- INET_ATON('192.168.110.75') = 3232235595
- INET_ATON('192.168.110.78') = 3232235598
- INET_ATON('192.168.110.87') = 3232235607
संख्यात्मक मानों के आधार पर सॉर्टिंग सही क्रम देती है, जबकि स्ट्रिंग सॉर्टिंग '192.168.110.75' को '192.168.110.78' के बाद रखती (क्योंकि '5' > '8' लेक्सिकोग्राफिकली)।
संबंधित फंक्शन
- INET_NTOA() - संख्यात्मक IP को वापस डॉटेड नोटेशन में बदलता है।
- INET6_ATON() / INET6_NTOA() - IPv6 एड्रेस के लिए।
उपयोग का उदाहरण
-- IP रेंज क्वेरी
SELECT * FROM logs
WHERE INET_ATON(ip) BETWEEN INET_ATON('192.168.1.1') AND INET_ATON('192.168.1.255');