MySQL में SUBSTRING_INDEX() और REPLACE() का उपयोग करके नाम को फर्स्ट और लास्ट नेम में विभाजित करना
जब एक कॉलम में "FirstName | LastName" प्रारूप में डेटा हो, तो SUBSTRING_INDEX() और REPLACE() फ़ंक्शन का उपयोग करके उन्हें अलग-अलग कॉलम में विभाजित किया जा सकता है।
उदाहरण के साथ पूर्ण कार्यान्वयन
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (Name VARCHAR(100));
रिकॉर्ड डालना (पाइप सेपरेटर के साथ)
mysql> INSERT INTO DemoTable VALUES('Chris | Bob Brown'), ('Carol | Robert Taylor'), ('Sam | David Miller');
सभी रिकॉर्ड प्रदर्शित करना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-----------------------+
| Name |
+-----------------------+
| Chris | Bob Brown |
| Carol | Robert Taylor |
| Sam | David Miller |
+-----------------------+
3 rows in set (0.00 sec)
अलग करने के लिए क्वेरी
mysql> SELECT
REPLACE(Name, SUBSTRING_INDEX(Name, ' ', -1), '') AS FirstName,
SUBSTRING_INDEX(Name, ' ', -1) AS LastName
FROM DemoTable;
आउटपुट:
+-----------------+----------+
| FirstName | LastName |
+-----------------+----------+
| Chris | Bob | Brown |
| Carol | Robert | Taylor |
| Sam | David | Miller |
+-----------------+----------+
3 rows in set (0.00 sec)
कैसे काम करता है:
SUBSTRING_INDEX(Name, ' ', -1)- अंतिम स्पेस के बाद का भाग निकालता है (लास्ट नेम)REPLACE(Name, [लास्ट नेम], '')- मूल स्ट्रिंग से लास्ट नेम को हटाकर फर्स्ट नेम प्राप्त करता है
⚠️ ध्यान दें: वर्तमान आउटपुट में फर्स्ट नेम कॉलम में पाइप सेपरेटर और अतिरिक्त स्पेस शामिल हैं। बेहतर दृष्टिकोण:
सुधारित क्वेरी (पाइप सेपरेटर का उपयोग करके)
mysql> SELECT
TRIM(SUBSTRING_INDEX(Name, '|', 1)) AS FirstName,
TRIM(SUBSTRING_INDEX(Name, '|', -1)) AS LastName
FROM DemoTable;
बेहतर आउटपुट:
+-----------+------------+
| FirstName | LastName |
+-----------+------------+
| Chris | Bob Brown |
| Carol | Robert Taylor |
| Sam | David Miller |
+-----------+------------+
मुख्य फ़ंक्शन:
SUBSTRING_INDEX(str, delim, count)- डेलिमीटर की घटना के आधार पर सबस्ट्रिंग निकालता हैTRIM()- अग्रणी/अनुगामी स्पेस हटाता हैREPLACE()- सबस्ट्रिंग प्रतिस्थापन