কম্পিউটার টিউটোরিয়াল

MySQL IF(), NULLIF(), IFNULL() ফাংশন ব্যবহারের গাইড

অন্য প্রোগ্রামিং ভাষার মতো, স্ট্রাকচার্ড কোয়েরি ল্যাঙ্গুয়েজে কন্ডিশনাল স্টেটমেন্ট আছে যা ডেটার ফ্লো নিয়ন্ত্রণ করে। IF ফাংশন শর্ত পূরণ হলে একটি স্টেটমেন্ট ফেরত দেয় এবং শর্ত পূরণ না হলে আরেকটি টাইপের স্টেটমেন্ট (অথবা কিছুই নয়) ফেরত দেয়। চলুন MySQL ব্যবহার করে SQL IF ফাংশন দেখি।

প্রস্তুতি

এই SQL Fiddle-এ একটি স্যাম্পল স্কিমা লিংক করা আছে যেটি নাম, বয়স, এবং জেন্ডার ধারণ করে — এই আর্টিকেলে আমরা इसी নিয়ে কাজ করব। আপনার নিজের IDE-এ এই স্কিমা দিয়ে একটি টেবিল তৈরি করুন:

create table names ( id INT, name VARCHAR(50), age INT, gender VARCHAR(50) ); insert into names (id, name, age, gender) values (1, 'Bret Starkings', 55, 'M'); insert into names (id, name, age, gender) values (2, 'Bobbye Eyckel', 76, 'F'); insert into names (id, name, age, gender) values (3, 'Barbie Veschi', 50, 'F'); insert into names (id, name, age, gender) values (4, 'Electra Blazewicz', 47, 'F'); insert into names (id, name, age, gender) values (5, 'Estrella Borleace', 57, 'F'); insert into names (id, name, age, gender) values (6, 'Washington Pittwood', 75, 'M'); insert into names (id, name, age, gender) values (7, 'Phaedra Tertre', 27, 'F'); insert into names (id, name, age, gender) values (8, 'Nicolina Elie', 76, 'F'); insert into names (id, name, age, gender) values (9, 'Hugh Hughson', 86, 'M'); insert into names (id, name, age, gender) values (10, 'Dare Ravilious', 59, 'M'); insert into names (id, name, age, gender) values (11, 'Cad Levins', 13, 'M'); insert into names (id, name, age, gender) values (12, 'Sollie Kimbury', 33, 'M'); insert into names (id, name, age, gender) values (13, 'Elga Rearie', 61, 'F'); insert into names (id, name, age, gender) values (14, 'Cherey Terron', 54, 'F'); insert into names (id, name, age, gender) values (15, 'Abbie Kent', 23, 'F'); insert into names (id, name, age, gender) values (38, 'Nelia Picot', 2, 'F'); insert into names (id, name, age, gender) values (39, 'Benedetto Smithin', 33, 'M'); insert into names (id, name, age, gender) values (40, 'Rickie Maymand', 83, 'F'); insert into names (id, name, age, gender) values (41, 'Kristoforo Dashkov', 6, 'M'); insert into names (id, name, age, gender) values (42, 'Cherice Genty', 6, 'F'); insert into names (id, name, age, gender) values (43, 'Shirley Fake', 95, 'F'); insert into names (id, name, age, gender) values (44, 'Aeriel Plant', 36, 'F'); insert into names (id, name, age, gender) values (45, 'Halimeda Gook', 74, 'F'); insert into names (id, name, age, gender) values (46, 'Minor Harriot', 63, 'M'); insert into names (id, name, age, gender) values (47, 'Greggory Found', 61, 'M'); insert into names (id, name, age, gender) values (48, 'Vivien Braund', 94, 'F'); insert into names (id, name, age, gender) values (49, 'Gaylord Pochet', 96, 'M'); insert into names (id, name, age, gender) values (77, 'Nataline Sealand', 43, 'F')

IF()

IF(expression ,expr_true, expr_false);

MySQL ডেটাবেসে IF ফাংশনের সিনট্যাক্স IF কিওয়ার্ড ব্যবহার করে এবং তিনটি প্যারামিটার নেয়: ফাংশনটি যে বুলিয়ান এক্সপ্রেশন মূল্যায়ন করছে, শর্ত সত্য হলে যে স্টেটমেন্ট ফেরত দেবে, এবং শর্ত মিথ্যা হলে যে স্টেটমেন্ট ফেরত দেবে।

SELECT name, age, IF(age >= 18, "YES", "NO") AS OVER_18 FROM names;

আমাদের উপরের কোয়েরি এন্ট্রির নাম এবং বয়স সিলেক্ট করে তারপর একটি কন্ডিশনাল সিলেক্ট করে যাকে আমরা OVER_18 বলে ডাকি। আমাদের SQL আংশিক ফলাফল নিচে দেখানো হলো (পূর্ণ ফলাফল এই SQL Fiddle-এ দেখতে পারবেন):

name age OVER_18
Bret Starkings 55 YES
Bobbye Eyckel 76 YES
Barbie Veschi 50 YES
Electra Blazewicz 47 YES
Estrella Borleace 57 YES
Washington Pittwood 75 YES
Phaedra Tertre 27 YES
Nicolina Elie 76 YES
Hugh Hughson 86 YES
Dare Ravilious 59 YES
Cad Levins 13 NO

IFNULL()

IFNULL() একটি কন্ডিশনাল স্টেটমেন্ট যা জিজ্ঞাসা করে প্রথম এক্সপ্রেশন NULL কিনা। যদি হয়, তবে এটি দ্বিতীয় এক্সপ্রেশন ফেরত দেয় প্রথমটির বদলে।

IFNULL(NULL, 2) ⇒ returns 2 IFNULL(0, 4) ⇒ returns 0 SELECT name, IFNULL(age, "NOT ENTERED") AS age FROM names;

এই MySQL স্টেটমেন্ট age নামক একটি কলাম ফেরত দেয় যা প্রতিটি NULL এন্ট্রিকে "NOT ENTERED" স্ট্রিং দিয়ে ওভাররাইট করবে।

NULLIF()

NULLIF() NULL ফেরত দেয় যখন ফাংশনে পাস করা দুটি এক্সপ্রেশন সমান হয়।

SELECT name, NULLIF(name, age) AS FROM names;

এটি একটি এক্সট্রিম উদাহরণ কারণ নাম এবং বয়স সমান হয় এমন কেস शायद কখনোই হবে না, কিন্তু সিনট্যাক্স কমপক্ষে এভাবে লেখা হবে। আপনি কি এমন কোনো কেস চিন্তা করতে পারেন যেখানে এই স্টেটমেন্ট ব্লক উপকারী হবে?

উপসংহার

MySQL-এ, ডেটার ফ্লো নিয়ন্ত্রণ করতে কয়েকটি ভিন্ন if ফাংশন আছে। এই কনসেপ্টগুলো আপনি যে ডেটাবেসে কাজ করছেন সেটির সাথে ট্রান্সলেট হয় — আপনার নির্দিষ্ট ডেটাবেসের সিনট্যাক্স সম্পর্কে আরও জানতে ডক্স চেক করুন।

  1. জাভাস্ক্রিপ্টে encodeURI() এবং decodeURI() ফাংশন

  2. জাভাস্ক্রিপ্টে প্রথম নাম এবং শেষ নাম আলাদা করা

  3. হ‍্যাশ ফাংশন এবং হ‍্যাশ টেবিল (Hash Functions and Hash Tables)

  4. Mac-এ Python 3 আপগ্রেড ও ব্যবহার করা