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

MySQL में नाम कॉलम से अंतिम स्पेस से पहले का भाग कैसे चुनें?

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.' के लिए):

  1. REVERSE → '.rJ ,yenwoD treboR'
  2. LOCATE(' ', ...) → 4 (पहला स्पेस 4थे स्थान पर)
  3. LENGTH → 19
  4. 19 - 4 + 1 = 16
  5. LEFT(..., 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 में संभव है लेकिन जटिल; एप्लिकेशन लेयर या जनरेटेड कॉलम प्राथमिकता दें।

  1. - MySQL में विशिष्ट अंक/अक्षर से समाप्त होने वाले कॉलम मान कैसे चुनें?

    MySQL LIKE ऑपरेटर: पैटर्न मिलान से मान चुनना LIKE ऑपरेटर के साथ वाइल्डकार्ड % का उपयोग करके आप उन मानों को चुन सकते हैं जो किसी विशिष्ट अक्षर या अंक से समाप्त होते हैं। उदाहरण: 8 अंक से समाप्त होने वाली संख्याएं टेबल बनाएं: CREATE TABLE DemoTable (Number INT); INSERT INTO DemoTable VALUES (189), (

  1. - MySQL में MONTH() और YEAR() का उपयोग करके विशिष्ट महीने और वर्ष के रिकॉर्ड्स कैसे चुनें

    MONTH() और YEAR() फंक्शन्स के साथ डेट फ़िल्टरिंग विशिष्ट महीने और वर्ष के रिकॉर्ड्स चुनने के लिए MONTH() और YEAR() फंक्शन्स का उपयोग WHERE क्लॉज में करें। आइए पहले एक टेबल बनाते हैं: mysql> CREATE TABLE DemoTable ( StudentName VARCHAR(40), StudentAdmissionDate DATE ); रिकॉर्ड्स इन्सर्ट कर

  1. - MySQL में INSERT ... SELECT क्वेरी का उपयोग कैसे करें?

    MySQL में INSERT ... SELECT स्टेटमेंट एक ही क्वेरी में एक तालिका से दूसरी तालिका में डेटा कॉपी करने या मानों की गणना करके डालने की अनुमति देता है। सिंटैक्स INSERT INTO target_table (col1, col2, col3, ...) SELECT col1, col2, col3, ... FROM source_table WHERE condition; उदाहरण: मानों को सीधे चुनकर ड