Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में SUBSTRING_INDEX() का उपयोग करके IP एड्रेस रिकॉर्ड्स के सब-पार्ट की गिनती करना

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))।

  1. - MySQL में संबंधित डुप्लिकेट रिकॉर्ड का योग करें

    आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> StudentName varchar(20), -> StudentMarks int -> ); Query OK, 0 rows affected (0.68 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(Chris,50); Query OK, 1 row affected

  1. - MySQL में NULL और NOT NULL रिकॉर्ड वाले कॉलम से केवल NOT NULL मान प्रदर्शित करें

    इसके लिए आप IS NOT NULL प्रॉपर्टी का उपयोग कर सकते हैं। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1 ( DueDate date ); Query OK, 0 rows affected (0.00 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable1 values(2019-09-10); Query OK, 1 r

  1. - MySQL में ENUM कॉलम से केवल 'NO' मानों की गणना करें

    MySQL में ENUM कॉलम पर सशर्त गणना के लिए बूलियन अभिव्यक्ति का योग (SUM(condition)) उपयोग कर सकते हैं। MySQL में TRUE = 1 और FALSE = 0 होता है। टेबल बनाएं mysql> CREATE TABLE DemoTable1829 ( Name VARCHAR(20), isTopper ENUM(YES,NO) ); डेटा डालें mysql> INSERT INTO DemoTable1829 VALUES(