MySQL में सरल सशर्त तर्क के लिए CASE WHEN के बजाय IF() फ़ंक्शन अधिक संक्षिप्त और पठनीय हो सकता है।
सिंटैक्स तुलना
CASE WHEN
SELECT CASE
WHEN PlayerScore = 0 THEN ''
ELSE PlayerScore
END FROM DemoTable;
IF() - सरल मामलों के लिए
SELECT IF(PlayerScore = 0, '', PlayerScore) FROM DemoTable;
उदाहरण
1. टेबल बनाएं
mysql> CREATE TABLE DemoTable1593 (PlayerScore INT);
2. डेटा डालें
mysql> INSERT INTO DemoTable1593 VALUES(78), (0), (89), (0);
3. IF() क्वेरी
mysql> SELECT IF(PlayerScore = 0, '', PlayerScore) FROM DemoTable1593;
4. परिणाम
+----------------------------------+ | if(PlayerScore=0,'',PlayerScore) | +----------------------------------+ | 78 | | | -- खाली स्ट्रिंग | 89 | | | -- खाली स्ट्रिंग +----------------------------------+
IF() बनाम CASE WHEN
| स्थिति | अनुशंसित | कारण |
|---|---|---|
| एक शर्त, दो परिणाम | IF() | सरल, संक्षिप्त |
| एकाधिक शर्तें | CASE WHEN | पठनीय, विस्तार योग्य |
| नेस्टेड शर्तें | CASE WHEN | स्पष्ट संरचना |
| मानक SQL अनुरूपता | CASE WHEN | ANSI SQL मानक |
| NULL हैंडलिंग | CASE (IS NULL) | IFNULL/COALESCE जरूरी |
IFNULL/COALESCE विकल्प
-- 0 को NULL मानें, फिर COALESCE SELECT COALESCE(NULLIF(PlayerScore, 0), '') FROM DemoTable1593; -- या सीधे SELECT CASE WHEN PlayerScore = 0 THEN '' ELSE PlayerScore END FROM DemoTable1593;
उपयोग के मामले
- IF(): फ्लैग जांच, सरल हां/नहीं, डिफ़ॉल्ट मान
- CASE WHEN: बहु-श्रेणी वर्गीकरण, जटिल व्यापार तर्क
प्रदर्शन
दोनों समान प्रदर्शन। ऑप्टिमाइज़र दोनों को समान रूप से संभालता है। पठनीयता के आधार पर चुनें।