MySQL में पूर्ण नाम (FullName) कॉलम से अंतिम स्पेस से पहले का भाग (यानी पहला/मध्य नाम) निकालने के लिए, LEFT(), LENGTH(), LOCATE(), REVERSE() फंक्शन संयोजित करें।
उदाहरण: 'Robert Downey, Jr.' → 'Robert Downey,'
डेमो टेबल बनाएं:
mysql> CREATE TABLE DemoTable1939 (FullName VARCHAR(20));
डेटा इन्सर्ट करें:
mysql> INSERT INTO DemoTable1939 VALUES
('Adam Smith'),
('Robert Downey, Jr.'),
('Sylvester Stallone'),
('Chris Hemsworth');
क्वेरी:
mysql> SELECT LEFT(FullName, LENGTH(FullName) - LOCATE(' ', REVERSE(FullName)) + 1)
FROM DemoTable1939;
आउटपुट:
+---------------------------------------------------------------------+
| LEFT(FullName, LENGTH(FullName) - LOCATE(' ', REVERSE(FullName))+1) |
+---------------------------------------------------------------------+
| Adam |
| Robert Downey, |
| Sylvester |
| Chris |
+---------------------------------------------------------------------+
फॉर्मूला व्याख्या
LEFT(FullName,
LENGTH(FullName) -- कुल लंबाई
- LOCATE(' ', REVERSE(FullName)) -- अंतिम स्पेस की पोजीशन (रिवर्स में)
+ 1) -- स्पेस शामिल करने के लिए +1
चरण दर चरण ('Robert Downey, Jr.' के लिए):
REVERSE→ '.rJ ,yenwoD treboR'LOCATE(' ', ...)→ 4 (पहला स्पेस 4थे स्थान पर)LENGTH→ 1919 - 4 + 1 = 16LEFT(..., 16)→ 'Robert Downey,'
सरल विकल्प: SUBSTRING_INDEX (MySQL)
-- अंतिम स्पेस से पहले सब कुछ
SELECT SUBSTRING_INDEX(FullName, ' ',
LENGTH(FullName) - LENGTH(REPLACE(FullName, ' ', '')) + 1)
-- जटिल; बेहतर:
SELECT TRIM(SUBSTRING_INDEX(FullName, ' ',
LENGTH(FullName) - LENGTH(REPLACE(FullName, ' ', ''))))
अंतिम नाम निकालने के लिए (अंतिम स्पेस के बाद)
SELECT SUBSTRING_INDEX(FullName, ' ', -1) AS last_name FROM DemoTable1939;
आउटपुट: 'Smith', 'Jr.', 'Stallone', 'Hemsworth'
बेहतर डिज़ाइन: अलग कॉलम
उत्पादन में, नाम भागों को अलग कॉलम में स्टोर करें:
CREATE TABLE persons (
first_name VARCHAR(50),
middle_name VARCHAR(50),
last_name VARCHAR(50),
full_name VARCHAR(150) GENERATED ALWAYS AS
(CONCAT_WS(' ', first_name, middle_name, last_name)) STORED
);
सावधानी
- एकल नाम (कोई स्पेस नहीं): फॉर्मूला पूरी स्ट्रिंग लौटाता है (सही व्यवहार)
- अंत में स्पेस: TRIM() पहले लागू करें
- एकाधिक लगातार स्पेस: REPLACE/TRIM से सामान्य करें
- यूनिकोड: LENGTH बाइट्स लौटाता है; CHAR_LENGTH वर्ण गिनता है
स्ट्रिंग मैनिपुलेशन SQL में संभव है लेकिन जटिल; एप्लिकेशन लेयर या जनरेटेड कॉलम प्राथमिकता दें।