এই আর্টিকেলে আমরা বিস্তারিত দেখব কীভাবে SQL Server-এ CASE স্টেটমেন্ট হ্যান্ডলিং ফাংশনটি ব্যবহার করতে হয় নির্দিষ্ট সিনট্যাক্স এবং উদাহরণসহ যাতে ফাংশনটি ভালোভাবে বুঝা এবং গ্রহণ করা যায়।
বিবরণ
CASE স্টেটমেন্ট SQL Server-এ ব্রাঞ্চ কন্ডিশন সেট করতে ব্যবহৃত হয়, IF-THEN-ELSE স্টেটমেন্টের ফাংশনের মতো।
CASE-এর ২টি ফরম্যাট রয়েছে:
- সিম্পল CASE ফাংশন, যাকে Simple CASE-ও বলা হয়।
- সার্চড CASE ফাংশন, যাকে Searched CASE-ও বলা হয়।
ভিতরে:
- Simple CASE হলো একটি এক্সপ্রেশনকে সিম্পল এক্সপ্রেশনهای একটি সেটের সাথে তুলনা করে ফলাফল নির্ধারণ করা।
- Searched CASE হলো বুলিয়ান এক্সপ্রেশনهای একটি সেট ইভ্যালুয়েট করে ফলাফল নির্ধারণ করা।
- দুই ফরম্যাটই ELSE আর্গুমেন্ট সাপোর্ট করে (যদিও বাধ্যতামূলক নয়)।
সিনট্যাক্স
SQL Server-এ CASE স্টেটমেন্ট ব্যবহার করতে, আমরা নিচের সিনট্যাক্স ব্যবহার করি:
Simple CASE
CASE ইনপুট_এক্সপ্রেশন
WHEN এক্সপ্রেশন_১ THEN ফলাফল_১
WHEN এক্সপ্রেশন_২ THEN ফলাফল_২
.
WHEN এক্সপ্রেশন_n THEN ফলাফল_n
ELSE অন্যান্য_ফলাফল
END
অথবা Searched CASE
CASE
WHEN কন্ডিশন_১ THEN ফলাফল_১
WHEN কন্ডিশন_২ THEN ফলাফল_২
.
WHEN কন্ডিশন_n THEN ফলাফল_n
ELSE অন্যান্য_ফলাফল
END
প্যারামিটার :
- ইনপুট_এক্সপ্রেশন: The এক্সপ্রেশন যেটি প্রদত্ত প্রতিটি ভ্যালুর সাথে তুলনা হবে।
- এক্সপ্রেশন_১, এক্সপ্রেশন_২, এক্সপ্রেশন_n: এক্সপ্রেশন যেগুলো ইনপুট এক্সপ্রেশন সাথে ক্রমশः তুলনা করার জন্য ব্যবহৃত হবে। যখন একটি এক্সপ্রেশন ইনপুট_এক্সপ্রেশনের সাথে মিলে যাবে, CASE পরবর্তী স্টেটমেন্ট এক্সিকিউট করবে আর আরও তুলনা করবে না।
- কন্ডিশন_১, কন্ডিশন_২, কন্ডিশন_n : যেসব কন্ডিশন রিভিউ করা হবে, তালিকাভুক্ত ক্রম অনুযায়ী অনুমোদিত। যখন একটি কন্ডিশন true নির্ধারিত হবে, CASE ফলাফল রিটার্ন করবে আর আরও কন্ডিশন ইভ্যালুয়েট করবে না। সব কন্ডিশন একই ডেটা টাইপের হতে হবে।
- ফলাফল_১, ফলাফল_২, ফলাফল_n : কন্ডিশন true হলে রিটার্ন হওয়া ফলাফল। সব মান একই ডেটা টাইপের হতে হবে।
নোট :
- যদি TRUE-এর জন্য কোনো ম্যাচ না পাওয়া যায়, CASE স্টেটমেন্ট ELSE ক্লজের ফলাফল রিটার্ন করবে।
- যদি ELSE ক্লজ না থাকে এবং কোনো TRUE কন্ডিশন না থাকে তবে CASE স্টেটমেন্ট NULL রিটার্ন করবে।
- কন্ডিশনগুলো তালিকাভুক্ত ক্রম অনুযায়ী ইভ্যালুয়েট হয়। যখন একটি কন্ডিশন true নির্ধারিত হয়, CASE স্টেটমেন্ট ফলাফল রিটার্ন করে এবং আর কোনো কন্ডিশন ইভ্যালুয়েট করা হয় না।
- CASE ব্যবহার করা যায় SQL Server-এর পরবর্তী ভার্সনগুলোতে: SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, এবং SQL Server 2005।
উদাহরণ
SQL Server-এ CASE স্টেটমেন্ট کے কিছু উদাহরণ দেখি ও এক্সপ্লোর করি।
উদাহরণ ১: Simple CASE
মান লেন TipsMake.com ওয়েবসাইটের সেকশন চেক করতে হয়, কনভার্সন টেবিলের Code কলামের ভিত্তিতে:
- Code = '01' হলে 'Laptrinh-TipsMake.com'।
- Code = '02' হলে 'Congnghe-TipsMake.com'।
- Code = '03' হলে 'Cuocsong-TipsMake.com'।
- অন্যথায়, ১ থেকে ৩ বাদে থাকলে 'Khoahoc-TipsMake.com' সেকশনে।
SELECT tenchuyenmuc, Code
(CASE code
WHEN 01 THEN 'Laptrinh-TipsMake.com'
WHEN 02 THEN 'Congnghe-TipsMake.com'
WHEN 03 THEN 'Cuocsong-TipsMake.com'
ELSE 'Khoahoc-TipsMake.com'
END) AS Chuyenmuc
FROM chuyenmuc
ORDER BY Code
ফেরত আসা ফলাফল:
tenchuyenmuc Code Chuyenmuc SQL Server 01 Laptrinh-TipsMake.com Linux 02 Congnghe-TipsMake.com Python 01 Laptrinh-TipsMake.com JavaScript 01 Laptrinh-TipsMake.com Android 02 Congnghe-TipsMake.com Giai tri 03 Cuocsong-TipsMake.com Cuocsong-TipsMake.com Science Curve 04 Khoahoc-TipsMake.com Kham pha Science 05 Khoahoc-TipsMake.comউদাহরণ ২: Searched CASE
SELECT tenchuyenmuc,
CASE
WHEN code = 01 THEN 'Laptrinh-TipsMake.com'
WHEN code = 02 THEN 'Congnghe-TipsMake.com'
WHEN code = 03 THEN 'Cuocsong-TipsMake.com'
ELSE 'Khoahoc-TipsMake.com'
END
FROM chuyenmuc;
আপনি ELSE কন্ডিশন না ব্যবহার করেও পারেন এইভাবে:
SELECT tenchuyenmuc, Code
(CASE code
WHEN 01 THEN 'Laptrinh-TipsMake.com'
WHEN 02 THEN 'Congnghe-TipsMake.com'WHEN 03 THEN 'Cuocsong-TipsMake.com'
END) AS Chuyenmuc
FROM chuyenmuc
ORDER BY Code
অথবা:
SELECT tenchuyenmuc,
CASE
WHEN code = 01 THEN 'Laptrinh-TipsMake.com'
WHEN code = 02 THEN 'Congnghe-TipsMake.com'
WHEN code = 03 THEN 'Cuocsong-TipsMake.com'
END
FROM chuyenmuc;
যখন ELSE ক্লজ বাদ দেয়া হয়, কোনো কন্ডিশন true না হলে CASE স্টেটমেন্ট NULL রিটার্ন করে।
উদাহরণ ৩: দুটি কন্ডিশন তুলনা
এখানে একটি উদাহরণ যা CASE স্টেটমেন্ট ব্যবহার করে ভিন্ন কন্ডিশন তুলনা করার পদ্ধতি দর্শায়:
SELECT
CASE
WHEN code < 2 THEN 'Laptrinh-TipsMake.com'
WHEN code = 2 THEN 'Congnghe-TipsMake.com'
END
FROM chuyenmuc;
মনে রাখবেন কন্ডিশনগুলো তালিকাভুক্ত ক্রম অনুযায়ী ক্রমশः তুলনা হয়। যখন একটি কন্ডিশন true নির্ধারিত হয়, CASE স্টেটমেন্ট অবিলম্বে ফলাফল রিটার্ন করে এবং আর কোনো কন্ডিশন ইভ্যালুয়েট করা হয় না। তাই আপনাকে আপনার কন্ডিশনগুলোর তালিকার ক্রম বাছাই করার সময় সতর্ক থাকতে হবে।
SQL Server-এ CASE ফাংশন کے আরও নির্দিষ্ট উদাহরণ দেখুন