MySQL में LTRIM() और RTRIM() का उपयोग करके स्पेस-असंवेदनशील नाम मिलान
जब दो कॉलम में समान नाम हों लेकिन अलग-अलग अग्रणी/अनुगामी स्पेस हों (जैसे " John " और "John"), तो LTRIM() और RTRIM() या TRIM() का उपयोग करके उन्हें सामान्यीकृत करके मिलान करें।
उदाहरण के साथ पूर्ण कार्यान्वयन
टेबल बनाना
mysql> CREATE TABLE DemoTable614 (
EnterName VARCHAR(100),
ReenterName VARCHAR(100)
);
रिकॉर्ड डालना (विभिन्न स्पेस के साथ)
mysql> INSERT INTO DemoTable614 VALUES(' John ', 'John'), ('Carol ', 'Bob'), ('David ', 'David');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable614;
आउटपुट:
+------------+--------------+
| EnterName | ReenterName |
+------------+--------------+
| John | John |
| Carol | Bob |
| David | David |
+------------+--------------+
3 rows in set (0.00 sec)
नोट: SQL क्लाइंट में स्पेस दृश्यमान नहीं हो सकते, लेकिन वे मौजूद हैं।
स्पेस-असंवेदनशील मिलान के लिए क्वेरी
mysql> SELECT * FROM DemoTable614
WHERE LTRIM(RTRIM(EnterName)) = LTRIM(RTRIM(ReenterName));
आउटपुट:
+------------+--------------+
| EnterName | ReenterName |
+------------+--------------+
| John | John |
| David | David |
+------------+--------------+
2 rows in set (0.00 sec)
फ़ंक्शन व्याख्या:
LTRIM(str)- अग्रणी (बाएं) स्पेस हटाता हैRTRIM(str)- अनुगामी (दाएं) स्पेस हटाता हैTRIM(str)- दोनों तरफ के स्पेस हटाता है (संक्षिप्त रूप)
सरल विकल्प: TRIM()
SELECT * FROM DemoTable614
WHERE TRIM(EnterName) = TRIM(ReenterName);
यह समान परिणाम देता है लेकिन अधिक पठनीय है।
केस-इनसेंसिटिव तुलना के लिए
WHERE LOWER(TRIM(EnterName)) = LOWER(TRIM(ReenterName))
व्यावहारिक उपयोग के मामले
- उपयोगकर्ता इनपुट सत्यापन (दोबारा दर्ज किया गया नाम/ईमेल)
- डेटा डिडुप्लीकेशन और सफाई
- फजी मैचिंग और रिकॉर्ड लिंकेज
- आयातित डेटा में विसंगतियों को संभालना
प्रदर्शन नोट: बड़े टेबल पर फ़ंक्शन-आधारित WHERE क्लॉज इंडेक्स उपयोग को रोक सकते हैं। इसके लिए जनरेटेड कॉलम या फंक्शनल इंडेक्स (MySQL 8.0+) पर विचार करें।