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
        

ఈ ప్రశ్న యొక్క ఫలితం ఇలా ఉంటుంది:

id ఉద్యోగి_ఐడి పేరు గడువు
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 జీవితం ఆనందించండి (శూన్య)