SELECT কোয়েরির ভেতরে সরাসরি শর্ত যাচাই করে ভিন্ন মান দেখাতে MySQL-এ IF() ফাংশন ব্যবহার করা হয়। এটি CASE WHEN-এর সিম্পল ভার্সন।
টেবিল ও ডেটা তৈরি
mysql> CREATE TABLE DemoTable1966 (
UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserName VARCHAR(20),
PhotoLiked INT
);
mysql> INSERT INTO DemoTable1966 (UserName, PhotoLiked) VALUES
('Chris', 57), ('David', 100), ('Mike', 68), ('Sam', 78);
ডেটা যাচাই
mysql> SELECT * FROM DemoTable1966;
+--------+----------+------------+ | UserId | UserName | PhotoLiked | +--------+----------+------------+ | 1 | Chris | 57 | | 2 | David | 100 | | 3 | Mike | 68 | | 4 | Sam | 78 | +--------+----------+------------+
IF() ব্যবহার: ৭৫-এর বেশি লাইক হলে নাম, নাহলে 'Likes are less'
mysql> SELECT IF(PhotoLiked > 75, UserName, 'Likes are less') AS Result
FROM DemoTable1966;
আউটপুট:
+------------------------------------------------+ | Result | +------------------------------------------------+ | Likes are less | | David | | Likes are less | | Sam | +------------------------------------------------+
IF() সিনট্যাক্স
IF(condition, value_if_true, value_if_false)
IF() vs CASE WHEN vs IFNULL()
| ফাংশন | উপযোগিতা | উদাহরণ |
|---|---|---|
| IF(cond, t, f) | সিম্পল টু-ওয়ে ব্রাঞ্চ | IF(score > 50, 'Pass', 'Fail') |
| CASE WHEN ... THEN ... ELSE ... END | মাল্টিপল শর্ত, কমপ্লেক্স লজিক | CASE WHEN s>90 THEN 'A' WHEN s>80 THEN 'B' ELSE 'C' END |
| IFNULL(expr1, expr2) | NULL ফলব্যাক (শুধু ২ আর্গুমেন্ট) | IFNULL(phone, 'N/A') |
| COALESCE(v1, v2, ...) | প্রথম নন-নাল (ANSI স্ট্যান্ডার্ড) | COALESCE(mobile, email, 'N/A') |
নেস্টেড IF (বর্জন করুন)
IF(cond1, val1, IF(cond2, val2, val3)) -- পঠনীয়তা খারাপ
বদলে CASE WHEN ব্যবহার করুন।
WHERE ক্লজে IF ব্যবহার (ফিল্টারিং)
SELECT * FROM DemoTable1966 WHERE IF(PhotoLiked > 75, 1, 0) = 1; -- শুধু ৭৫+ লাইক والے