2.1 வழக்கு அறிக்கை

SQL இல் ஒரு அறிக்கையை எழுத இரண்டு வழிகள் உள்ளன CASE. முதல் நுழைவு ஜாவா மொழியிலிருந்து மாறுவது போலவும், இரண்டாவது வடிவம் பன்மையைப் போலவும் இருக்கும் if-else.

முதல் விருப்பத்துடன் தொடங்குவோம் - சுவிட்சின் அனலாக். பொதுவான வடிவம்:

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

உண்மையில் மிகவும் ஒத்த switch, சொற்கள் மட்டும் சற்று வித்தியாசமாக உள்ளன:

SQL ஜாவா
வழக்கு x மாறு (x) {
மதிப்பு போது வழக்கு மதிப்பு:
பின்னர் முடிவு திரும்ப முடிவு;
வேறு முடிவு இயல்புநிலை: திரும்பும் முடிவு;
முடிவு }

ஜாவாவிலிருந்து ஒரு உதாரணத்தை 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.

ஜாவாவிலிருந்து ஒரு உதாரணத்தை 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 அறிக்கையைப் பயன்படுத்தி சிக்கலைத் தீர்க்கவும்

சில சுவாரஸ்யமான கேள்விகளை எழுதுவோம். நினைவில் கொள்ளுங்கள், எங்களுக்கு ஒரு பணி இருந்தது - "காலாவதியானது!" பணி அட்டவணையில் கடந்த பணிகளின் பெயருக்கு . அதை எளிதாக செய்ய முடியும் 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 வாழ்க்கையை அனுபவிக்கவும் (ஏதுமில்லை)