MySQL में केस-सेंसिटिव यूनिकनेस (अद्वितीयता) और केस-इनसेंसिटिव खोज एक साथ प्राप्त करने के दो तरीके हैं:
1. VARBINARY डेटा टाइप
CREATE TABLE SearchingDemo2 (
UserId VARBINARY(128) NOT NULL,
UNIQUE KEY index_on_UserId2 (UserId)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
VARBINARY बाइनरी तुलना करता है, इसलिए 'abc' और 'ABC' अलग माने जाते हैं (यूनिकनेस के लिए)।
2. _bin कोलेशन
CREATE TABLE SearchingDemo (
UserId VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
UNIQUE KEY index_on_UserId (UserId)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
utf8_bin कोलेशन बाइट-दर-बाइट तुलना करता है, जिससे केस-सेंसिटिव यूनिकनेस मिलती है।
खोज के लिए: केस-इनसेंसिटिव खोज के लिए क्वेरी में COLLATE utf8_general_ci या LOWER()/UPPER() का उपयोग करें:
SELECT * FROM SearchingDemo WHERE UserId COLLATE utf8_general_ci = 'john';
या टेबल डिफॉल्ट कोलेशन utf8_unicode_ci (केस-इनसेंसिटिव) होने पर साधारण खोज स्वतः केस-इनसेंसिटिव होगी, जबकि यूनिक कंस्ट्रेंट utf8_bin के कारण केस-सेंसिटिव रहेगा।