utf8_bin कॉलेशन के साथ एक्सेंट-सेंसिटिव तुलना
डिफ़ॉल्ट रूप से, MySQL का utf8_general_ci या utf8mb4_general_ci कॉलेशन एक्सेंट-असंवेदनशील होता है (उदाहरण: 'é' = 'e')। एक्सेंट-संवेदनशील खोज के लिए, utf8_bin या utf8mb4_bin बाइनरी कॉलेशन का उपयोग करें।
सिंटैक्स
कॉलम_नाम डेटा_प्रकार COLLATE utf8_bin;
उदाहरण
1. एक्सेंट-संवेदनशील कॉलम के साथ टेबल बनाएं
mysql> CREATE TABLE AccentSearchDemo (
-> Id VARCHAR(100) COLLATE utf8_bin
-> );
2. टेस्ट डेटा डालें
mysql> INSERT INTO AccentSearchDemo VALUES('John123');
mysql> INSERT INTO AccentSearchDemo VALUES('Smith123');
mysql> INSERT INTO AccentSearchDemo VALUES('123John');
3. खोज करें
mysql> SELECT * FROM AccentSearchDemo WHERE Id = 'john123';
परिणाम: 0 पंक्तियाँ (केस-संवेदनशील भी)
mysql> SELECT * FROM AccentSearchDemo WHERE Id = 'John123';
परिणाम: 1 पंक्ति मिली
कॉलेशन तुलना
| कॉलेशन | केस | एक्सेंट | उपयोग |
|---|---|---|---|
| utf8_general_ci | असंवेदनशील | असंवेदनशील | सामान्य (डिफ़ॉल्ट) |
| utf8_unicode_ci | असंवेदनशील | असंवेदनशील | बेहतर सॉर्टिंग |
| utf8_bin | संवेदनशील | संवेदनशील | सटीक मिलान |
| utf8mb4_0900_ai_ci | असंवेदनशील | असंवेदनशील | MySQL 8.0 डिफ़ॉल्ट, बेहतर यूनिकोड |
| utf8mb4_0900_as_cs | संवेदनशील | संवेदनशील | MySQL 8.0+, सटीक मिलान |
क्वेरी-स्तरीय कॉलेशन (टेबल बदले बिना)
SELECT * FROM टेबल WHERE कॉलम = 'मान' COLLATE utf8_bin;
नोट्स
utf8mb4(4-बाइट UTF-8)utf8(3-बाइट, अपूर्ण) पर पसंदीदा है- इंडेक्स कॉलेशन-विशिष्ट हैं: अलग कॉलेशन के लिए अलग इंडेक्स की आवश्यकता हो सकती है
- बाइनरी कॉलेशन बाइट-दर-बाइट तुलना करता है, जो केस और एक्सेंट दोनों के लिए संवेदनशील होता है