MySQL-এ একসাথে একাধিক প্যাটার্ন ম্যাচ করতে LIKE কে IN() এর মতো ব্যবহার করতে COUNT(), IF() এবং LIKE কম্বাইন করা হয়।
টেবিল এবং ডেটা
CREATE TABLE DemoTable (
Subject VARCHAR(80)
);
INSERT INTO DemoTable VALUES('MySQLMongoDB');
INSERT INTO DemoTable VALUES('MySQL');
INSERT INTO DemoTable VALUES('JavaMySQL');
INSERT INTO DemoTable VALUES('MongoDB');
INSERT INTO DemoTable VALUES('Java');
কুয়েরি: প্রতিটি কীওয়ার্ডের কাউন্ট
SELECT
COUNT(IF(Subject LIKE '%MySQL%', 1, NULL)) AS MySQLCount,
COUNT(IF(Subject LIKE '%Java%', 1, NULL)) AS JavaCount,
COUNT(IF(Subject LIKE '%MongoDB%', 1, NULL)) AS MongoDBCount
FROM DemoTable;
ফলাফল
+------------+-----------+--------------+
| MySQLCount | JavaCount | MongoDBCount |
+------------+-----------+--------------+
| 3 | 2 | 2 |
+------------+-----------+--------------+
ব্যাখ্যা
IF(condition, 1, NULL)— শর্ত সত্য হলে ১, মিথ্যা হলে NULLCOUNT()— NULL বাদ দিয়ে নন-নাল মান গুনে%— ওয়াইল্ডকার্ড, যেকোনো ক্যারেক্টার ম্যাচ করে
বিকল্প: REGEXP ব্যবহার
SELECT
SUM(Subject REGEXP 'MySQL') AS MySQLCount,
SUM(Subject REGEXP 'Java') AS JavaCount,
SUM(Subject REGEXP 'MongoDB') AS MongoDBCount
FROM DemoTable;
REGEXP বুলিয়ান রিটার্ন করে (১/০), তাই SUM() দিয়ে সরাসরি কাউন্ট করা যায়।