CASE WHEN में शर्तों का उपयोग (WHERE नहीं)
MySQL में CASE स्टेटमेंट के अंदर WHERE क्लॉज सीधे उपयोग नहीं किया जा सकता। इसके बजाय CASE WHEN condition THEN ... सिंटैक्स का उपयोग करें जहां शर्तें बूलियन अभिव्यक्तियां होती हैं।
टेबल और डेटा
mysql> CREATE TABLE DemoTable1040 (
Value1 INT,
Value2 INT,
Value3 INT
);
Query OK, 0 rows affected (0.65 sec)
mysql> INSERT INTO DemoTable1040 VALUES(10,30,1); Query OK, 1 row affected (0.16 sec) mysql> INSERT INTO DemoTable1040 VALUES(40,20,50); Query OK, 1 row affected (0.15 sec) mysql> INSERT INTO DemoTable1040 VALUES(80,90,100); Query OK, 1 row affected (0.11 sec)
सभी रिकॉर्ड
mysql> SELECT * FROM DemoTable1040;
+--------+--------+--------+ | Value1 | Value2 | Value3 | +--------+--------+--------+ | 10 | 30 | 1 | | 40 | 20 | 50 | | 80 | 90 | 100 | +--------+--------+--------+ 3 rows in set (0.00 sec)
CASE WHEN से सशर्त मान चयन
mysql> SELECT CASE
WHEN (Value1=40 AND Value2=20) THEN Value2
ELSE Value1
END AS selectedValue
FROM DemoTable1040;
परिणाम:
+---------------+ | selectedValue | +---------------+ | 10 | | 20 | | 80 | +---------------+ 3 rows in set (0.00 sec)
व्याख्या: पंक्ति 1: Value1=10, Value2=30 → शर्त असत्य → Value1 (10)। पंक्ति 2: Value1=40, Value2=20 → शर्त सत्य → Value2 (20)। पंक्ति 3: Value1=80, Value2=90 → शर्त असत्य → Value1 (80)।
सरल CASE: CASE Value1 WHEN 40 THEN Value2 ELSE Value1 END भी काम करता है लेकिन केवल समानता जांच के लिए। खोजे गए CASE (CASE WHEN) अधिक लचीला है।