Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL: ความแตกต่างระหว่าง != NULL และ IS NOT NULL

สร้างตารางและข้อมูลตัวอย่าง

mysql> create table DemoTable1970 ( Value int );
mysql> insert into DemoTable1970 values(10);
mysql> insert into DemoTable1970 values(NULL);

ข้อมูลในตาราง

+-------+
| Value |
+-------+
| 10    |
| NULL  |
+-------+

ทดสอบเปรียบเทียบ

mysql> select Value!=NULL as Output1, Value IS NOT NULL as Output2 from DemoTable1970;

ผลลัพธ์

+---------+---------+
| Output1 | Output2 |
+---------+---------+
| NULL    | 1       |
| NULL    | 0       |
+---------+

คำอธิบาย

  • != NULL (หรือ <> NULL): คืนค่า NULL เสมอ เพราะใน SQL ทุกการเปรียบเทียบกับ NULL ผลลัพธ์คือ UNKNOWN (NULL) ไม่ใช่ TRUE/FALSE
  • IS NOT NULL: เป็น Operator พิเศษที่ตรวจสอบค่า NULL ได้ถูกต้อง คืนค่า 1 (TRUE) ถ้าไม่ใช่ NULL, 0 (FALSE) ถ้าเป็น NULL
  • IS NULL: ตรงข้ามกับ IS NOT NULL คืนค่า 1 ถ้าเป็น NULL, 0 ถ้าไม่ใช่

กฎสำคัญ

ใน SQL: NULL = NULL เป็น FALSE, NULL != NULL เป็น FALSE, NULL IS NULL เป็น TRUE

ตัวอย่างการใช้งานที่ถูกต้อง

-- ถูกต้อง
SELECT * FROM table WHERE column IS NOT NULL;
SELECT * FROM table WHERE column IS NULL;

-- ผิด (จะไม่ได้ผลลัพธ์ที่ต้องการ)
SELECT * FROM table WHERE column != NULL;
SELECT * FROM table WHERE column = NULL;