MySQL-এ কেস-সেনসিটিভ ইউনিক কনস্ট্রেইন্ট এবং কেস-ইনসেনসিটিভ সার্চ একসাথে অর্জন করার দুটি পদ্ধতি রয়েছে।
পদ্ধতি ১: VARBINARY ডেটা টাইপ
CREATE TABLE SearchingDemo2 (
UserId VARBINARY(128) NOT NULL,
UNIQUE KEY idx_userid2 (UserId)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
VARBINARYবাইট-লেভেল কম্পারিজন করে (কেস-সেনসিটিভ)- ইউনিক কী ডুপ্লিকেট ব্লক করে (case-sensitive)
- টেবিল কলেশন
utf8_unicode_ciথাকলে সার্চ কেস-ইনসেনসিটিভ হয়
পদ্ধতি ২: _bin কলেশন
CREATE TABLE SearchingDemo (
UserId VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
UNIQUE KEY idx_userid (UserId)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
- কলাম-লেভেল
utf8_bin→ কেস-সেনসিটিভ কম্পারিজন - টেবিল-লেভেল
utf8_unicode_ci→ কেস-ইনসেনসিটিভ সার্চ
টেস্ট
INSERT INTO SearchingDemo VALUES ('John'), ('JOHN'); -- উভয় ইনসার্ট হবে (unique)
SELECT * FROM SearchingDemo WHERE UserId = 'john'; -- কেস-ইনসেনসিটিভ সার্চ → ২ রো
সুপারিশ: আধুনিক MySQL-এ utf8mb4 এবং utf8mb4_0900_ai_ci (accent-insensitive, case-insensitive) ব্যবহার করুন।