কিছু মানের পরে application code-এ একটা আলাদা step ছাড়াই, ঠিক query-র ভেতরে একটা শর্তের উপর ভিত্তি করে আকার বদলানো দরকার। এই তিনটা expression প্রায় প্রতিটা আসা case কভার করে।
ক্রমানুসারে শর্ত evaluate করে আর প্রথম মিলে যাওয়াটার সাথে যুক্ত মান return করে, কোনোটা না মিললে ELSE-এ ফিরে যায়।
SELECT
name,
price,
CASE
WHEN price < 10 THEN 'Budget'
WHEN price < 50 THEN 'Mid-range'
ELSE 'Premium'
END AS price_tier
FROM products;Common Mistake
Overlap করা শর্ত চুপচাপ ভুল branch return করতে পারে — একটা common ভুল price range এমনভাবে সাজানো যে একটা আগের, বেশি broad শর্ত ইতিমধ্যে মিলে যাওয়ায় পরের, বেশি specific একটা শর্তে কখনো পৌঁছানো যায় না।
যেকোনো সংখ্যক argument নেয় আর NULL না এমন প্রথমটা return করে — একটা মান না থাকলে একটা default substitute করতে প্রায়ই ব্যবহৃত।
SELECT
name,
COALESCE(nickname, name) AS display_name
FROM users;
-- একটা nickname থাকলে দেখায়, না হলে আসল নামে ফিরে যায়-- দুটির বেশি argument-এর সাথেও কাজ করে, ক্রমানুসারে চেষ্টা করা
SELECT COALESCE(phone_mobile, phone_home, phone_work, 'No phone on file')
FROM contacts;বিপরীত ধারণা — দুটি মান তুলনা করে, সমান হলে NULL return করে, না হলে প্রথম মান। সবচেয়ে বেশি divide-by-zero error এড়াতে ব্যবহৃত।
SELECT
total_revenue / NULLIF(total_orders, 0) AS avg_order_value
FROM sales_summary;
-- total_orders 0 হলে, NULLIF 0-এর বদলে NULL return করে,
-- আর NULL দিয়ে ভাগ করলে divide-by-zero error-এর বদলে NULL পাওয়া যায়| Expression | উদ্দেশ্য |
|---|---|
| CASE | Multi-branch conditional logic — একটা query-র জন্য if/elseif/else |
| COALESCE(a, b, c, ...) | প্রথম non-NULL argument return করে — একটা default মান fallback |
| NULLIF(a, b) | a আর b সমান হলে NULL return করে, না হলে a return করে — প্রায়ই divide-by-zero আটকাতে ব্যবহৃত |