2.1 केस स्टेटमेंट
SQL में Statement लिखने के दो तरीके हैं CASE। पहली प्रविष्टि इसे जावा भाषा से स्विच की तरह दिखती है, जबकि दूसरा प्रारूप बहुवचन की तरह है if-else।
आइए पहले विकल्प से शुरू करें - स्विच का एक एनालॉग। सामान्य प्रारूप है:
CASE case_value
WHEN value1 THEN result1
[WHEN value2 THEN result2] ...
[ELSE resultN]
END
वास्तव में बहुत समान है switch, केवल शब्द थोड़े अलग हैं:
| एसक्यूएल | जावा |
|---|---|
| केस एक्स | स्विच (एक्स) { |
| जब मूल्य | मामला मूल्य: |
| फिर परिणाम | वापसी परिणाम; |
| अन्य परिणाम | डिफ़ॉल्ट: वापसी परिणाम; |
| अंत | } |
आइए जावा से एसक्यूएल में एक उदाहरण का अनुवाद करें:
| जावा | एसक्यूएल |
|---|---|
|
|
2.2 CASE कथन का दूसरा संस्करण
ऑपरेटर का एक दूसरा संस्करण भी है CASE, जैसा कि ऊपर उल्लेख किया गया है, बहुवचन की तरह अधिक है if-else। सामान्य प्रारूप है:
CASE
WHEN condition 1 THEN result1
[WHEN condition 2 THEN result2] ...
[ELSE resultN]
END
यहां, शर्तों को क्रमिक रूप से जांचा जाता है, यदि उनमें से कोई भी सत्य है, तो निर्दिष्ट परिणाम वापस आ जाएगा। यदि कोई भी स्थिति सत्य नहीं है, तो में निर्दिष्ट मान ELSE।
आइए जावा से एसक्यूएल में एक उदाहरण का अनुवाद करें:
| जावा | एसक्यूएल |
|---|---|
|
|
|
|
|
|
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 | जीवन का आनंद लें | (व्यर्थ) |
GO TO FULL VERSION