MySQL-এ IFNULL() ফাংশন ব্যবহার করে NULL ডেটা মানকে বিকল্প মান দিয়ে প্রতিস্থাপন করে সর্ট বা ফিল্টার করা যায়।
টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> CREATE TABLE DemoTable (
-> added_date DATE,
-> updated_date DATE
-> );
Query OK, 0 rows affected (0.95 sec)
mysql> INSERT INTO DemoTable VALUES('2019-01-10', '2019-06-01');
mysql> INSERT INTO DemoTable VALUES('2019-05-19', NULL);
mysql> INSERT INTO DemoTable VALUES(NULL, '2019-09-05');
সব রেকর্ড দেখানো
mysql> SELECT * FROM DemoTable;
আউটপুট
+------------+--------------+ | added_date | updated_date | +------------+--------------+ | 2019-01-10 | 2019-06-01 | | 2019-05-19 | NULL | | NULL | 2019-09-05 | +------------+--------------+ 3 rows in set (0.00 sec)
কেস ১: অবরোহী ক্রমে (updated_date প্রাধান্য, না থাকলে added_date)
mysql> SELECT * FROM DemoTable ORDER BY IFNULL(updated_date, added_date) DESC;
আউটপুট
+------------+--------------+ | added_date | updated_date | +------------+--------------+ | NULL | 2019-09-05 | | 2019-01-10 | 2019-06-01 | | 2019-05-19 | NULL | +------------+--------------+ 3 rows in set (0.00 sec)
কেস ২: আরোহী ক্রমে
mysql> SELECT * FROM DemoTable ORDER BY IFNULL(updated_date, added_date);
আউটপুট
+------------+--------------+ | added_date | updated_date | +------------+--------------+ | 2019-05-19 | NULL | | 2019-01-10 | 2019-06-01 | | NULL | 2019-09-05 | +------------+--------------+ 3 rows in set (0.00 sec)
ব্যাখ্যা: IFNULL(updated_date, added_date) — updated_date যদি NULL না হয়, তবে সেটি ব্যবহার করে; NULL হলে added_date ব্যবহার করে। এভাবে একক ভ্যালু বের করে সর্ট করা হয়েছে।
বিকল্প: COALESCE(updated_date, added_date) — একই কাজ, একাধিক ফলব্যাক সাপোর্ট করে।