2.1 केस स्टेटमेंट

SQL में Statement लिखने के दो तरीके हैं CASE। पहली प्रविष्टि इसे जावा भाषा से स्विच की तरह दिखती है, जबकि दूसरा प्रारूप बहुवचन की तरह है if-else

आइए पहले विकल्प से शुरू करें - स्विच का एक एनालॉग। सामान्य प्रारूप है:

CASE case_value
	WHEN value1 THEN result1
	[WHEN value2 THEN result2] ...
	[ELSE resultN]
END

वास्तव में बहुत समान है switch, केवल शब्द थोड़े अलग हैं:

एसक्यूएल जावा
केस एक्स स्विच (एक्स) {
जब मूल्य मामला मूल्य:
फिर परिणाम वापसी परिणाम;
अन्य परिणाम डिफ़ॉल्ट: वापसी परिणाम;
अंत }

आइए जावा से एसक्यूएल में एक उदाहरण का अनुवाद करें:

जावा एसक्यूएल
switch (a) {
   case 1: return "one";
   case 2: return "two";
   case 3: return "three";
   default: return "unknown";
}
CASE a
   WHEN 1 THEN 'one'
   WHEN 2 THEN 'two'
   WHEN 3 THEN 'three'
   ELSE 'unknown'
END

2.2 CASE कथन का दूसरा संस्करण

ऑपरेटर का एक दूसरा संस्करण भी है CASE, जैसा कि ऊपर उल्लेख किया गया है, बहुवचन की तरह अधिक है if-else। सामान्य प्रारूप है:

CASE
	WHEN condition 1 THEN result1
	[WHEN condition 2 THEN result2] ...
	[ELSE resultN]
END

यहां, शर्तों को क्रमिक रूप से जांचा जाता है, यदि उनमें से कोई भी सत्य है, तो निर्दिष्ट परिणाम वापस आ जाएगा। यदि कोई भी स्थिति सत्य नहीं है, तो में निर्दिष्ट मान ELSE

आइए जावा से एसक्यूएल में एक उदाहरण का अनुवाद करें:

जावा एसक्यूएल
if (a == 3)
	return "three";
CASE
   WHEN a=3 THEN 'three'
END
if (a == 3)
	return "three";
else
	return "zero";
CASE
   WHEN a=3 THEN 'three'
   ELSE 'zero'
END
if (a == 1)
	return "three";
else if (a == 2)
	return "two";
else if (a == 3)
	return "three";
else
	return "zero";
CASE
   WHEN a=1 THEN 'one'
   WHEN a=2 THEN 'two'
   WHEN a=3 THEN 'three'
   ELSE 'zero'
END

2.3 CASE कथन का उपयोग करके समस्या का समाधान करें

आइए कुछ रोचक प्रश्न लिखें। याद रखें, हमारा एक काम था - शब्द "EXPIRED!" कार्य तालिका में पिछले कार्यों के नाम पर । से आसानी से किया जा सकता है CASE

समय सीमा क्षेत्र के लिए , यह कथन के दूसरे संस्करण जैसा दिखेगा CASE:


CASE
	WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name)
	ELSE name
END
        

ऑपरेटर का उपयोग करके पूर्ण क्वेरी का एक उदाहरण CASE:


SELECT
    id,
    emploee_id,
    CASE WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name) ELSE name END AS name,
    deadline         	
FROM task
        

इस प्रश्न का परिणाम होगा:

पहचान कर्मचारी_आईडी नाम अंतिम तारीख
1 1 खत्म हो चुका! दृश्यपटल पर एक बग ठीक करें 2022-06-01
2 2 बैकएंड पर एक बग ठीक करें 2022-06-15
3 5 कॉफी खरीदें 2022-07-01
4 5 कॉफी खरीदें 2022-08-01
5 5 कॉफी खरीदें 2022-09-01
6 (व्यर्थ) कार्यालय की सफाई करें (व्यर्थ)
7 4 जीवन का आनंद लें (व्यर्थ)
8 6 जीवन का आनंद लें (व्यर्थ)