MySQL-এ <> (নয়) অপারেটর NULL-এর সাথে কাজ করে না। NULL-এর সাথে যেকোনো তুলনা (শামিল <>) ফলাফল NULL (অনিশ্চিত) দেয়, `TRUE` বা `FALSE` নয়। সঠিক পদ্ধতি IS NOT NULL।
NULL-এর সাথে <> তুলনার ফলাফল
mysql> select 10 <> NULL; +------------+ | 10 <> NULL | +------------+ | NULL | +------------+ 1 row in set (0.00 sec) mysql> select NULL <> NULL; +--------------+ | NULL <> NULL | +--------------+ | NULL | +--------------+ 1 row in set (0.00 sec) mysql> select 'Chris' <> NULL; +-----------------+ | 'Chris' <> NULL | +-----------------+ | NULL | +-----------------+ 1 row in set (0.00 sec) mysql> select '' <> NULL; +------------+ | '' <> NULL | +------------+ | NULL | +------------+ 1 row in set (0.00 sec)
সব ক্ষেত্রে ফলাফল NULL — কোনো রো সিলেক্ট হবে না।
টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> create table DemoTable846(Value int); Query OK, 0 rows affected (0.93 sec)
mysql> insert into DemoTable846 values(NULL); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable846 values(10); Query OK, 1 row affected (0.11 sec)
সকল রেকর্ড দেখানো
mysql> select * from DemoTable846;
+-------+ | Value | +-------+ | NULL | | 10 | +-------+ 2 rows in set (0.00 sec)
IS NOT NULL ব্যবহার (সঠিক)
mysql> select * from DemoTable846 where Value IS NOT NULL;
+-------+ | Value | +-------+ | 10 | +-------+ 1 row in set (0.00 sec)
<> NULL ব্যবহার (ভুল - কোনো রো ফেরত দেবে না)
mysql> select * from DemoTable846 where Value <> NULL; Empty set (0.00 sec)
কেন <> NULL কাজ করে না?
- SQL-এ NULL = "অজানা মান" বা "মান নেই"
- অজানা মানের সাথে তুলনা = অজানা ফলাফল (NULL)
NULL = NULL→ NULL (TRUE নয়)NULL <> NULL→ NULL (FALSE নয়)
সঠিক প্যাটার্ন
| উদ্দেশ্য | সঠিক সিনট্যাক্স | ভুল সিনট্যাক্স |
|---|---|---|
| NULL নয় | WHERE col IS NOT NULL | WHERE col <> NULL |
| NULL হ্যাঁ | WHERE col IS NULL | WHERE col = NULL |
| NULL বা খালি স্ট্রিং | WHERE col IS NULL OR col = '' | WHERE col <> '' |
| COALESCE ব্যবহার | WHERE COALESCE(col, '') <> '' | - |