MySQL-এ দুটি কলাম থেকে প্রথম নন-NULL মান বের করার ৪টি পদ্ধতি
যদি দুটি কলাম থাকে এবং আপনি চান যেন যেটিতে মান আছে (NULL নয়) সেটিই ফেরত দেয়, তবে নিচের ৪টি পদ্ধতি ব্যবহার করা যায়।
পদ্ধতি ১: IFNULL()
SELECT IFNULL(col1, col2) AS NonNullValue FROM yourTableName;
পদ্ধতি ২: COALESCE()
SELECT COALESCE(col1, col2) AS NonNullValue FROM yourTableName;
COALESCE একাধিক কলাম নিতে পারে: COALESCE(col1, col2, col3, 'default')।
পদ্ধতি ৩: CASE WHEN
SELECT CASE WHEN col1 IS NOT NULL THEN col1 ELSE col2 END AS NonNullValue FROM yourTableName;
পদ্ধতি ৪: IF()
SELECT IF(col1 IS NULL, col2, col1) AS NonNullValue FROM yourTableName;
উদাহরণ
টেবিল তৈরি
mysql> CREATE TABLE SelectNotNullColumnsDemo (
-> Id INT NOT NULL AUTO_INCREMENT,
-> Name VARCHAR(20),
-> Age INT,
-> PRIMARY KEY(Id)
-> );
ডেটা ইনসার্ট (একটা Name=NULL, আরেকটা Age=NULL)
mysql> INSERT INTO SelectNotNullColumnsDemo(Name, Age) VALUES('John', NULL), (NULL, 23);
সকল রেকর্ড
mysql> SELECT * FROM SelectNotNullColumnsDemo;
+----+------+------+ | Id | Name | Age | +----+------+------+ | 1 | John | NULL | | 2 | NULL | 23 | +----+------+------+
৪টি পদ্ধতির ফলাফল (সব একই)
mysql> SELECT IFNULL(Name, Age) AS NonNullValue FROM SelectNotNullColumnsDemo; mysql> SELECT COALESCE(Name, Age) AS NonNullValue FROM SelectNotNullColumnsDemo; mysql> SELECT CASE WHEN Name IS NOT NULL THEN Name ELSE Age END AS NonNullValue FROM SelectNotNullColumnsDemo; mysql> SELECT IF(Name IS NULL, Age, Name) AS NonNullValue FROM SelectNotNullColumnsDemo;
+--------------+ | NonNullValue | +--------------+ | John | | 23 | +--------------+
সুপারিশ: COALESCE সবচেয়ে পঠনীয় এবং একাধিক ফলব্যাক সাপোর্ট করে। IFNULL শুধু ২ আর্গুমেন্ট নেয়। CASE জটিল লজিকের জন্য। IF MySQL-স্পেসিফিক।