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

MySQL में SUBSTRING_INDEX() से अंतिम डॉट (.) के बाद का सबस्ट्रिंग निकालें

MySQL में किसी स्ट्रिंग में **अंतिम डॉट (.) के बाद का भाग** निकालने के लिए SUBSTRING_INDEX() फ़ंक्शन का उपयोग ऋणात्मक काउंट के साथ करें। यह फाइल एक्सटेंशन, डोमेन पार्सिंग, ईमेल डोमेन, और पथ प्रसंस्करण के लिए बहुत उपयोगी है।

सिंटैक्स

SUBSTRING_INDEX(string, '.', -1)
  • string - स्रोत स्ट्रिंग
  • '.' - डिलीमीटर (डॉट)
  • -1 - **अंतिम** डिलीमीटर के **दाएं** का भाग लौटाएं

व्यावहारिक उदाहरण

टेबल बनाएं:

mysql> CREATE TABLE DemoTable1341 (Value VARCHAR(60));

mysql> INSERT INTO DemoTable1341 VALUES('John.123.@gmail.com');
mysql> INSERT INTO DemoTable1341 VALUES('Carol.Taylor.gmail');
mysql> INSERT INTO DemoTable1341 VALUES('C.MyFolder.Location');

डेटा देखें:

mysql> SELECT * FROM DemoTable1341;
+---------------------+
| Value               |
+---------------------+
| John.123.@gmail.com |
| Carol.Taylor.gmail  |
| C.MyFolder.Location |
+---------------------+

अंतिम डॉट के बाद का भाग निकालें

mysql> SELECT SUBSTRING_INDEX(Value, '.', -1) FROM DemoTable1341;

परिणाम

+---------------------------------+
| SUBSTRING_INDEX(Value, '.', -1) |
+---------------------------------+
| com                             |
| gmail                           |
| Location                        |
+---------------------------------+

व्याख्या

SUBSTRING_INDEX() काउंट व्यवहार

मूल स्ट्रिंगडॉट स्थितिअंतिम डॉट के बाद
John.123.@gmail.com3 डॉटcom
Carol.Taylor.gmail2 डॉटgmail
C.MyFolder.Location2 डॉटLocation
Countव्यवहारउदाहरण: 'a.b.c.d'
1पहले डॉट से पहले'a'
2दूसरे डॉट से पहले'a.b'
-1अंतिम डॉट के बाद'd'
-2अंतिम से पहले डॉट के बाद'c.d'

व्यावहारिक उपयोग केस

ईमेल से डोमेन निकालें

SELECT SUBSTRING_INDEX(email, '@', -1) AS domain FROM users;

फाइल नाम से एक्सटेंशन निकालें

SELECT SUBSTRING_INDEX(filename, '.', -1) AS extension FROM files;

URL से अंतिम पथ खंड

SELECT SUBSTRING_INDEX(url, '/', -1) AS last_segment FROM urls;

पहला भाग प्राप्त करें (पहले डॉट से पहले)

SELECT SUBSTRING_INDEX(Value, '.', 1) FROM DemoTable1341;
+-------------------------------+
| SUBSTRING_INDEX(Value, '.', 1) |
+-------------------------------+
| John                          |
| Carol                         |
| C                             |
+-------------------------------+

सावधानी

  • यदि डिलीमीटर नहीं मिलता, तो **पूरी स्ट्रिंग** लौटाई जाती है
  • NULL इनपुट → NULL आउटपुट
  • केस-सेंसिटिव: '.' बनाम '.' (समान), लेकिन 'A' बनाम 'a' अलग

विकल्प: REGEXP_SUBSTR (MySQL 8.0+)

SELECT REGEXP_SUBSTR(Value, '[^.]+$') FROM DemoTable1341;

नियमित अभिव्यक्ति: [^.]+$ = डॉट के अलावा वर्ण, अंत तक।

SUBSTRING_INDEX() सरल, तेज़, और सभी MySQL संस्करणों में उपलब्ध है - डिलीमीटर-आधारित पार्सिंग के लिए पसंदीदा विकल्प।

  1. - MySQL में DATE_SUB और BETWEEN से अंतिम N दिन पहले के रिकॉर्ड ढूंढें

    MySQL में DATE_SUB() और BETWEEN का उपयोग करके किसी दिनांक कॉलम में अंतिम N दिनों के रिकॉर्ड क्वेरी कर सकते हैं। उदाहरण: पिछले 3 दिन पहले के पोस्ट (आधार दिनांक: 2019-10-20) 1. टेबल बनाएं CREATE TABLE DemoTable1582 (PostedDate DATETIME); 2. डेटा डालें INSERT INTO DemoTable1582 VALUES(2019-10-25 0

  1. - MySQL टेबल में विशिष्ट तारीख की घटनाओं की गिनती कैसे करें?

    MySQL में किसी DATE कॉलम में विशिष्ट तारीख की घटनाओं (occurrences) को गिनने के लिए, COUNT(*) के साथ WHERE date(column) = target_date का उपयोग करें। यह सरल, कुशल, और इंडेक्स-अनुकूल है। उदाहरण: 2019-12-11 तारीख की गिनती डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1946 (ShippingDate DATE); डेट

  1. - MySQL में टेबल A की तुलना में टेबल B में नहीं होने पर टेबल C में डेटा डालें

    समाधान टेबल A और B पर LEFT JOIN का उपयोग करें, जहां B में मेल नहीं खाता वहां के रिकॉर्ड टेबल C में डालें। उदाहरण टेबल A (demo20): INSERT INTO demo20 VALUES (100,John), (101,Bob), (102,Mike), (103,Carol); टेबल B (demo21): INSERT INTO demo21 VALUES (100,Sam), (101,Adam), (133,Bob), (145,David); ट