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

MySQL में INET_ATON() से IP पते को मानव-पठनीय क्रम में सॉर्ट करें

IP पते को स्ट्रिंग के रूप में सॉर्ट करने पर '192.168.1.100' '192.168.1.2' से पहले आ जाता है। INET_ATON() IP पते को संख्या में बदलकर सही संख्यात्मक क्रम देता है।

समस्या: स्ट्रिंग सॉर्ट

ORDER BY IpAddress
-- परिणाम: 192.168.1.100, 192.168.1.2, 192.168.1.20 (गलत)

समाधान: INET_ATON()

ORDER BY INET_ATON(IpAddress)
-- परिणाम: 192.168.1.2, 192.168.1.20, 192.168.1.100 (सही)

उदाहरण

1. टेबल बनाएं

mysql> CREATE TABLE DemoTable (IpAddress VARCHAR(50));

2. डेटा डालें

mysql> INSERT INTO DemoTable VALUES('192.168.110.78');
mysql> INSERT INTO DemoTable VALUES('192.168.110.87');
mysql> INSERT INTO DemoTable VALUES('192.168.110.75');

3. INET_ATON के साथ सॉर्ट

mysql> SELECT * FROM DemoTable
    -> ORDER BY INET_ATON(IpAddress);

4. परिणाम

+----------------+
| IpAddress      |
+----------------+
| 192.168.110.75 |
| 192.168.110.78 |
| 192.168.110.87 |
+----------------+

INET_ATON / INET_NTOA

फ़ंक्शनकार्यउदाहरण
INET_ATON()IP स्ट्रिंग → पूर्णांकINET_ATON('192.168.1.1') = 3232235777
INET_NTOA()पूर्णांक → IP स्ट्रिंगINET_NTOA(3232235777) = '192.168.1.1'

IPv6 के लिए (MySQL 8.0+)

INET6_ATON()   -- IPv6 स्ट्रिंग → बाइनरी (VARBINARY)
INET6_NTOA()   -- बाइनरी → IPv6 स्ट्रिंग

-- सॉर्टिंग
ORDER BY INET6_ATON(ipv6_address)

प्रदर्शन टिप

  • बड़े टेबल के लिए, ip_int INT UNSIGNED कॉलम जोड़ें और उस पर इंडेक्स बनाएं
  • INSERT/UPDATE ट्रिगर से INET_ATON() स्वचालित भरें
  • क्वेरी में ORDER BY ip_int उपयोग करें

स्टोरेज अनुशंसा

IPv4 के लिए INT UNSIGNED (4 बाइट्स), IPv6 के लिए VARBINARY(16) या BINARY(16) उपयोग करें। स्ट्रिंग (VARCHAR) स्टोरेज और सॉर्टिंग दोनों के लिए अकुशल है।

  1. - MySQL में FIND_IN_SET से कॉमा-सेपरेटेड कॉलम में मान की स्थिति खोजें

    FIND_IN_SET(str, strlist) फ़ंक्शन कॉमा-सेपरेटेड स्ट्रिंग सूची में किसी स्ट्रिंग की स्थिति (1-आधारित) लौटाता है। यह IN से अलग है; यह सटीक पूर्ण-तत्व मिलान करता है। टेबल बनाएं mysql> CREATE TABLE DemoTable1866 ( Value1 INT, ListOfValues VARCHAR(100) ); डेटा डालें mysql> INSERT INTO Dem

  1. - MySQL में कॉमा-सेपरेटेड मानों के बीच विशिष्ट स्ट्रिंग कैसे खोजें?

    MySQL में जब किसी कॉलम में कॉमा-सेपरेटेड मान (CSV) स्टोर होते हैं, तो उनमें किसी विशिष्ट मान को खोजने के लिए REGEXP (रेगुलर एक्सप्रेशन) का उपयोग करना सबसे प्रभावी तरीका है। यह सटीक मिलान सुनिश्चित करता है और आंशिक मिलान से बचाता है। उदाहरण: REGEXP के साथ CSV खोज डेमो टेबल बनाएं: mysql> CREATE

  1. - MySQL में BigQuery से समय में मिनट कैसे निकालें

    समाधान EXTRACT() और CAST() का उपयोग करके समय कॉलम से मिनट निकालें। सिंटैक्स SELECT EXTRACT(MINUTE FROM CAST(yourColumnName AS TIME)) AS aliasName FROM yourTableName; उदाहरण टेबल बनाएं: INSERT INTO demo15 VALUES (10:30:45), (06:34:55); क्वेरी SELECT EXTRACT(MINUTE FROM CAST(value AS TIME)) AS Mi