MySQL में CASE Expression
CASE क्या है
CASE expression query के अंदर if-else logic जोड़ता है। यह conditions क्रम में जाँचता है और पहले true वाले को value लौटाता है, वरना default। यह कच्चे data को अर्थपूर्ण labels में बदलने को बढ़िया है — जैसे marks को grades में बदलना — SELECT में ही।
CASE syntax
CASE
WHEN condition1 THEN value1
WHEN condition2 THEN value2
ELSE default_value
END
हर WHEN ऊपर से नीचे जाँचा जाता है; पहला true वाला अपनी value देता है। कोई मेल न खाए तो ELSE इस्तेमाल होता है। आप इसे आमतौर पर SELECT list में column का नाम देने को AS के साथ रखते हैं।
उदाहरण: grades assign
SELECT name, marks,
CASE
WHEN marks >= 90 THEN 'A'
WHEN marks >= 75 THEN 'B'
WHEN marks >= 40 THEN 'C'
ELSE 'Fail'
END AS grade
FROM students;
हर student के marks CASE द्वारा grade में बदले जाते हैं, store data बदले बिना।
Data categorise करना
SELECT name, salary,
CASE
WHEN salary >= 50000 THEN 'High'
WHEN salary >= 25000 THEN 'Medium'
ELSE 'Low'
END AS pay_band
FROM employees;
CASE निरंतर values को नाम वाले bands में समूहबद्ध करने को बढ़िया है — salary को High/Medium/Low, age को ranges में, वग़ैरह।
ORDER BY में CASE
SELECT name, status
FROM orders
ORDER BY
CASE status
WHEN 'urgent' THEN 1
WHEN 'normal' THEN 2
ELSE 3
END;
यहाँ CASE हर status को sort rank देता है, तो urgent orders पहले आते हैं, फिर normal, फिर बाक़ी — एक custom order जो सादे ASC/DESC से नहीं मिलता।
Simple CASE रूप
SELECT name,
CASE grade
WHEN 'A' THEN 'Excellent'
WHEN 'B' THEN 'Good'
ELSE 'Average'
END AS remark
FROM students;
Simple CASE एक column को values से तुलना करता है। जब आप एक column को fixed values से जाँच रहे हों, पूरी conditions लिखने के बजाय, यह छोटा है।
आम गलतियाँ
- END भूलना। हर CASE
ENDसे ख़त्म होना चाहिए। - गलत condition क्रम। सख़्त conditions पहले रखिए, वरना ढीली सब पकड़ लेती है।
- ELSE छूटना। इसके बिना, बेमेल rows NULL लौटाती हैं।
- CASE के data बदलने की उम्मीद। यह सिर्फ़ query result प्रभावित करता है।
सारांश
- CASE query के अंदर if-else logic जोड़ता है।
- Syntax:
CASE WHEN ... THEN ... ELSE ... END। - Conditions क्रम में जाँची जाती हैं; पहली true जीतती है।
- इसे grades, categories, और custom ORDER BY को इस्तेमाल कीजिए।
- यह display को values गणना करता है, store बदलाव नहीं।
आगे, nulls संभालिए IFNULL और COALESCE से, या report बनाइए report card query में।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
MySQL में CASE expression क्या है?
CASE expression कैसे लिखूँ?
CASE WHEN condition THEN value ... ELSE default END इस्तेमाल कीजिए। हर WHEN क्रम में जाँचा जाता है; पहला true वाला अपनी value देता है। इसे SELECT list में डालिए, अक्सर नए column का नाम देने को AS के साथ।Simple और searched CASE में क्या अंतर है?
WHEN marks >= 90)। Simple CASE एक expression को values से तुलना करता है (जैसे CASE grade WHEN 'A' THEN ...)। Searched CASE ज़्यादा लचीला है।