MySQL-এ RLIKE ও BINARY CAST দিয়ে কেস-সেনসিটিভ সার্চ
কলামে কমপক্ষে একটি বড় হাতের অক্ষর (A-Z) আছে কিনা চেক করতে RLIKE (রেজেক্স লাইক) সাথে CAST(... AS BINARY) ব্যবহার করা হয়। এটি কেস-সেনসিটিভ ম্যাচিং নিশ্চিত করে।
সিনট্যাক্স
SELECT * FROM yourTableName WHERE CAST(yourColumnName AS BINARY) RLIKE '[A-Z]';
উদাহরণ সহ ব্যাখ্যা
টেবিল তৈরি:
mysql> CREATE TABLE contains_capital_letterDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(100)
-> );
ডেটা ইনসার্ট (মিশ্র কেস):
mysql> INSERT INTO contains_capital_letterDemo(Name) VALUES('Larry');
mysql> INSERT INTO contains_capital_letterDemo(Name) VALUES('larry');
mysql> INSERT INTO contains_capital_letterDemo(Name) VALUES('john');
mysql> INSERT INTO contains_capital_letterDemo(Name) VALUES('JOHN');
mysql> INSERT INTO contains_capital_letterDemo(Name) VALUES('mike');
mysql> INSERT INTO contains_capital_letterDemo(Name) VALUES('Mike');
সব ডেটা:
mysql> SELECT * FROM contains_capital_letterDemo;
+----+-------+ | Id | Name | +----+-------+ | 1 | Larry | | 2 | larry | | 3 | john | | 4 | JOHN | | 5 | mike | | 6 | Mike | +----+-------+
বড় হাতের অক্ষর থাকা রো খুঁজে বের করি:
mysql> SELECT * FROM contains_capital_letterDemo
-> WHERE CAST(Name AS BINARY) RLIKE '[A-Z]';
ফলাফল:
+----+-------+ | Id | Name | +----+-------+ | 1 | Larry | | 4 | JOHN | | 6 | Mike | +----+-------+
ব্যাখ্যা: CAST(Name AS BINARY) স্ট্রিংকে বাইনারি স্ট্রিং-এ রূপান্তর করে, ফলে রেজেক্স কেস-সেনসিটিভভাবে কাজ করে। RLIKE হল REGEXP-র сиনোনিম।