2.1 CASE विधान

SQL मध्ये विधान लिहिण्याचे दोन मार्ग आहेत CASE. पहिली एंट्री जावा भाषेतून स्विच केल्यासारखे दिसते, तर दुसरे स्वरूप बहुवचन सारखे आहे if-else.

चला पहिल्या पर्यायासह प्रारंभ करूया - स्विचचे अॅनालॉग. सामान्य स्वरूप आहे:

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

खरोखर सारखेच switch, फक्त शब्द थोडे वेगळे आहेत:

SQL जावा
केस x स्विच (x) {
जेव्हा मूल्य केस मूल्य:
नंतर परिणाम परतावा परिणाम;
इतर परिणाम डीफॉल्ट: परतावा परिणाम;
शेवट }

चला Java मधून SQL मध्ये एक उदाहरण अनुवादित करू:

जावा SQL
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.

चला Java मधून SQL मध्ये एक उदाहरण अनुवादित करू:

जावा SQL
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
        

या क्वेरीचा परिणाम असेल:

आयडी कर्मचारी_आयडी नाव अंतिम मुदत
कालबाह्य! फ्रंटएंडवरील बगचे निराकरण करा 2022-06-01
2 2 बॅकएंडवरील बगचे निराकरण करा 2022-06-15
3 कॉफी विकत घ्या 2022-07-01
4 कॉफी विकत घ्या 2022-08-01
कॉफी विकत घ्या 2022-09-01
6 (निरर्थक) ऑफिसची साफसफाई करा (निरर्थक)
4 जीवनाचा आनंद घे (निरर्थक)
8 6 जीवनाचा आनंद घे (निरर्थक)