MySQL-এ C/C++-এর মত ?: টারনারি অপারেটর নেই। কিন্তু CASE WHEN ... THEN ... ELSE ... END এক্সপ্রেশন দিয়ে একই লজিক ইমপ্লিমেন্ট করা যায়।
C/C++ টারনারি অপারেটর উদাহরণ
int result = (X > 1 && (X - Y) < 0) ? X : (X - Y);
MySQL-এ সমতুল্য CASE এক্সপ্রেশন
SELECT CASE
WHEN tbl.X > 1 AND (tbl.X - tbl.Y) < 0 THEN 0
ELSE (tbl.X - tbl.Y)
END AS Result
FROM TernaryOperationDemo tbl;
উদাহরণ দিয়ে বুঝি
টেবিল তৈরি করুন:
mysql> CREATE TABLE TernaryOperationDemo (
-> X INT,
-> Y INT
-> );
Query OK, 0 rows affected (0.61 sec)
রেকর্ড ইনসার্ট করুন:
mysql> INSERT INTO TernaryOperationDemo VALUES(10, 5);
mysql> INSERT INTO TernaryOperationDemo VALUES(5, 15);
mysql> INSERT INTO TernaryOperationDemo VALUES(20, 15);
mysql> INSERT INTO TernaryOperationDemo VALUES(15, 25);
mysql> INSERT INTO TernaryOperationDemo VALUES(10, -11);
সকল রেকর্ড:
mysql> SELECT * FROM TernaryOperationDemo;
+------+------+
| X | Y |
+------+------+
| 10 | 5 |
| 5 | 15 |
| 20 | 15 |
| 15 | 25 |
| 10 | -11 |
+------+------+
5 rows in set (0.00 sec)
CASE এক্সপ্রেশন চালান
mysql> SELECT CASE
-> WHEN tbl.X > 1 AND (tbl.X - tbl.Y) < 0 THEN 0
-> ELSE (tbl.X - tbl.Y)
-> END AS Result
-> FROM TernaryOperationDemo tbl;
+--------+
| Result |
+--------+
| 5 |
| 0 |
| 5 |
| 0 |
| 21 |
+--------+
5 rows in set (0.00 sec)
MySQL-এ IF() ফাংশন (সিম্পল টারনারি)
সিম্পল কেসের জন্য IF(condition, true_value, false_value) ব্যবহার করা যায়:
SELECT IF(X > Y, 'X is greater', 'Y is greater or equal') FROM table;
CASE vs IF
| ফিচার | CASE | IF() |
|---|---|---|
| বহু শর্ত | সাপোর্ট করে (WHEN...WHEN...ELSE) | সাপোর্ট করে না |
| ANSI SQL স্ট্যান্ডার্ড | হ্যাঁ | না (MySQL-স্পেসিফিক) |
| নেস্টেড ব্যবহার | সহজ | জটিল হয় |
সুপারিশ: জটিল লজিকের জন্য CASE ব্যবহার করুন, সিম্পল টু-ওয়ে ব্রাঞ্চের জন্য IF() ব্যবহার করুন।