MySQL में LOWER() का उपयोग करके केस-असंवेदनशील अंतिम नाम मिलान
जब अंतिम नाम समान हों लेकिन केस अलग हो (जैसे 'Smith' और 'smith'), तो LOWER() या UPPER() फ़ंक्शन का उपयोग करके केस-असंवेदनशील तुलना करें।
उदाहरण के साथ पूर्ण कार्यान्वयन
टेबल बनाना
mysql> CREATE TABLE DemoTable623 (
FirstName VARCHAR(100),
LastName VARCHAR(100),
Age INT
);
रिकॉर्ड डालना (केस विविधता के साथ)
mysql> INSERT INTO DemoTable623 VALUES
('John', 'Smith', 23),
('Adam', 'smith', 23),
('Chris', 'Brown', 24),
('Robert', 'brown', 21);
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable623;
आउटपुट:
+-----------+----------+------+
| FirstName | LastName | Age |
+-----------+----------+------+
| John | Smith | 23 |
| Adam | smith | 23 |
| Chris | Brown | 24 |
| Robert | brown | 21 |
+-----------+----------+------+
4 rows in set (0.00 sec)
केस-असंवेदनशील अंतिम नाम 'smith' के लिए क्वेरी
mysql> SELECT FirstName FROM DemoTable623 WHERE LOWER(LastName) = 'smith';
आउटपुट:
+-----------+
| FirstName |
+-----------+
| John |
| Adam |
+-----------+
2 rows in set (0.00 sec)
व्याख्या:
LOWER(LastName)- कॉलम मान को लोअरकेस में बदलता है'smith'- तुलना मान (लोअरकेस में)- 'Smith' → 'smith' ✓, 'smith' → 'smith' ✓
विकल्प विधियाँ
1. UPPER() के साथ
SELECT FirstName FROM DemoTable623 WHERE UPPER(LastName) = 'SMITH';
2. केस-असंवेदनशील कॉलेशन (यदि टेबल कॉलेशन ci है)
-- यदि कॉलेशन utf8mb4_general_ci (ci = केस-इनसेंसिटिव) है
SELECT FirstName FROM DemoTable623 WHERE LastName = 'smith'; -- काम करता है!
डिफ़ॉल्ट MySQL कॉलेशन (_ci अंत वाला) केस-असंवेदनशील होते हैं।
3. COLLATE क्लॉज के साथ स्पष्ट
SELECT FirstName FROM DemoTable623
WHERE LastName COLLATE utf8mb4_general_ci = 'smith';
4. बाइनरी तुलना (केस-सेंसिटिव)
SELECT FirstName FROM DemoTable623 WHERE LastName = BINARY 'Smith'; -- केवल 'Smith'
SELECT FirstName FROM DemoTable623 WHERE LastName COLLATE utf8mb4_bin = 'Smith';
प्रदर्शन विचार
LOWER(LastName)इंडेक्स उपयोग को रोकता है (जब तक फंक्शनल इंडेक्स न हो)- केस-असंवेदनशील कॉलेशन (
_ci) इंडेक्स उपयोग की अनुमति देता है - बड़े टेबल पर, कॉलेशन-आधारित दृष्टिकोण बेहतर
संबंधित: ट्रिम + केस असंवेदनशील
SELECT FirstName FROM DemoTable623
WHERE LOWER(TRIM(LastName)) = 'smith';
स्पेस और केस दोनों संभालता है।