একটি কলামে NULL এবং খালি স্ট্রিং ('') উভয় থাকতে পারে। তাদের আলাদা আলাদা গণনা করতে CASE WHEN এবং UNION ALL ব্যবহার করা হয়।
টেবিল তৈরি ও ডেটা ইনসার্ট
mysql> create table DemoTable781 (Name varchar(100)); Query OK, 0 rows affected (0.66 sec)
mysql> insert into DemoTable781 values('');
Query OK, 1 row affected (0.29 sec)
mysql> insert into DemoTable781 values('Chris');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable781 values('');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable781 values(NULL);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable781 values(NULL);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable781 values('');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable781 values(NULL);
Query OK, 1 row affected (0.28 sec)
রেকর্ড দেখানো
mysql> select * from DemoTable781;
আউটপুট:
+-------+ | Name | +-------+ | | | Chris | | | | NULL | | NULL | | | | NULL | +-------+ 7 rows in set (0.00 sec)
NULL ও খালি স্ট্রিং আলাদা আলাদা গণনা
mysql> (SELECT SUM(CASE WHEN Name IS NULL THEN 1 ELSE 0 END) AS NullCountAndEmptyCount FROM DemoTable781) UNION ALL (SELECT SUM(CASE WHEN Name = '' THEN 1 ELSE 0 END) AS NullCountAndEmptyCount FROM DemoTable781);
ফলাফল:
+------------------------+ | NullCountAndEmptyCount | +------------------------+ | 3 | | 3 | +------------------------+ 2 rows in set (0.00 sec)
ব্যাখ্যা
- প্রথম কোয়েরি:
IS NULLচেক করে NULL সংখ্যা (৩টি)। - দ্বিতীয় কোয়েরি:
= ''চেক করে খালি স্ট্রিং সংখ্যা (৩টি)। UNION ALLফলাফল একসাথে যোড় করে (ডুপ্লিকেট সরায় না)।
একই কোয়েরিতে উভয় পাওয়ার উপায়
SELECT
SUM(CASE WHEN Name IS NULL THEN 1 ELSE 0 END) AS NullCount,
SUM(CASE WHEN Name = '' THEN 1 ELSE 0 END) AS EmptyCount
FROM DemoTable781;
ফলাফল: NullCount=3, EmptyCount=3 (একটি রোতে দুটি কলাম)।