2.1 CASE বিবৃতি

SQL এ একটি বিবৃতি লেখার দুটি উপায় আছে CASE। প্রথম এন্ট্রি এটিকে জাভা ভাষা থেকে সুইচের মতো দেখায়, যখন দ্বিতীয় বিন্যাসটি আরও বহুবচনের মতো if-else

আসুন প্রথম বিকল্পটি দিয়ে শুরু করি - সুইচের একটি এনালগ। সাধারণ বিন্যাস হল:

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

সত্যিই খুব অনুরূপ switch, শুধুমাত্র শব্দগুলি সামান্য ভিন্ন:

এসকিউএল জাভা
কেস x সুইচ (x) {
যখন মান কেস মান:
তারপর ফলাফল ফেরত ফলাফল;
অন্য ফলাফল ডিফল্ট: রিটার্ন ফলাফল;
শেষ }

জাভা থেকে এসকিউএল-এ একটি উদাহরণ অনুবাদ করা যাক:

জাভা এসকিউএল
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
        

এই প্রশ্নের ফলাফল হবে:

আইডি emploee_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 জীবন উপভোগ করুন (খালি)