MySQL-এ প্রতিটি রোয়ের জন্য নির্দিষ্ট কলামগুলো শূন্য বা NULL নয় কিনা চেক করে গণনা করতে IF() ফাংশন ব্যবহার করা হয়।
টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> CREATE TABLE DemoTable (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Number1 INT,
-> Number2 INT
-> );
Query OK, 0 rows affected (1.15 sec)
mysql> INSERT INTO DemoTable(Number1, Number2) VALUES(10, 20); mysql> INSERT INTO DemoTable(Number1, Number2) VALUES(0, 32); mysql> INSERT INTO DemoTable(Number1, Number2) VALUES(40, 0); mysql> INSERT INTO DemoTable(Number1, Number2) VALUES(40, 50);
সব রেকর্ড দেখানো
mysql> SELECT * FROM DemoTable;
আউটপুট
+----+---------+---------+ | Id | Number1 | Number2 | +----+---------+---------+ | 1 | 10 | 20 | | 2 | 0 | 32 | | 3 | 40 | 0 | | 4 | 40 | 50 | +----+---------+---------+ 4 rows in set (0.00 sec)
নন-জিরো কলাম গণনা (IF() ব্যবহার)
mysql> SELECT *,
-> IF(Number1 <> 0, 1, 0) + IF(Number2 <> 0, 1, 0) AS TotalCount
-> FROM DemoTable;
আউটপুট
+----+---------+---------+------------+ | Id | Number1 | Number2 | TotalCount | +----+---------+---------+------------+ | 1 | 10 | 20 | 2 | | 2 | 0 | 32 | 1 | | 3 | 40 | 0 | 1 | | 4 | 40 | 50 | 2 | +----+---------+---------+------------+ 4 rows in set (0.00 sec)
ব্যাখ্যা: IF(condition, true_val, false_val) — শর্ত সত্য হলে true_val, মিথ্যা হলে false_val রিটার্ন করে। এখানে Number1 <> 0 সত্য হলে ১, মিথ্যা হলে ০। দুটি কলামের ফলাফল যোগ করে TotalCount পাওয়া গেলো।
NULL হ্যান্ডলিং: Number1 <> 0 যদি Number1 NULL হয়, তবে ফলাফল NULL (যা IF-এ false হিসেবে বিবেচিত হয়)। স্পষ্ট NULL চেক: IF(Number1 IS NOT NULL AND Number1 <> 0, 1, 0)।
বিকল্প (MySQL 8.0+): (Number1 <> 0) + (Number2 <> 0) — বুলিয়ান TRUE=১, FALSE=০ সরাসরি যোগ করা যায়।