SUBSTRING_INDEX() के साथ IP एड्रेस के पहले 3 ऑक्टेट्स द्वारा ग्रुपिंग
IP एड्रेस के पहले तीन ऑक्टेट्स (नेटवर्क भाग) द्वारा रिकॉर्ड्स ग्रुप करके काउंट करने के लिए SUBSTRING_INDEX() फंक्शन का उपयोग करें।
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
SystemIpAddress TEXT
);
IP एड्रेस रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES ('192.168.130.67');
mysql> INSERT INTO DemoTable VALUES ('192.168.130.87');
mysql> INSERT INTO DemoTable VALUES ('192.168.131.47');
mysql> INSERT INTO DemoTable VALUES ('192.168.134.50');
mysql> INSERT INTO DemoTable VALUES ('192.168.131.12');
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-----------------+ | SystemIpAddress | +-----------------+ | 192.168.130.67 | | 192.168.130.87 | | 192.168.131.47 | | 192.168.134.50 | | 192.168.131.12 | +-----------------+
IP एड्रेस के पहले 3 ऑक्टेट्स द्वारा ग्रुप करके काउंट करने के लिए क्वेरी:
mysql> SELECT SUBSTRING_INDEX(tbl.SystemIpAddress, '.', 3), COUNT(*) AS Total
FROM DemoTable tbl
GROUP BY SUBSTRING_INDEX(tbl.SystemIpAddress, '.', 3)
ORDER BY Total DESC
LIMIT 5;
आउटपुट:
+----------------------------------------------+-------+ | SUBSTRING_INDEX(tbl.SystemIpAddress, '.', 3) | Total | +----------------------------------------------+-------+ | 192.168.130 | 2 | | 192.168.131 | 2 | | 192.168.134 | 1 | +----------------------------------------------+-------+
व्याख्या:
- SUBSTRING_INDEX(str, delim, count): डिलीमीटर
delimकेcountवें घटना से पहले का सबस्ट्रिंग लौटाता है SUBSTRING_INDEX('192.168.130.67', '.', 3)→ तीसरे '.' से पहले का भाग ='192.168.130'- COUNT(*) प्रत्येक नेटवर्क प्रीफिक्स के लिए रिकॉर्ड्स गिनता है
- ORDER BY Total DESC सबसे अधिक काउंट वाले नेटवर्क पहले दिखाता है
- LIMIT 5 शीर्ष 5 नेटवर्क तक सीमित करता है
SUBSTRING_INDEX व्यवहार:
| कॉल | परिणाम |
|---|---|
| SUBSTRING_INDEX('a.b.c.d', '.', 1) | 'a' |
| SUBSTRING_INDEX('a.b.c.d', '.', 2) | 'a.b' |
| SUBSTRING_INDEX('a.b.c.d', '.', 3) | 'a.b.c' |
| SUBSTRING_INDEX('a.b.c.d', '.', -1) | 'd' (अंतिम भाग) |
| SUBSTRING_INDEX('a.b.c.d', '.', -2) | 'c.d' (अंतिम 2 भाग) |
उपयोग के मामले: नेटवर्क ट्रैफिक विश्लेषण, सबनेट द्वारा ग्रुपिंग, डोमेन द्वारा ईमेल ग्रुपिंग (SUBSTRING_INDEX(email, '@', -1))।