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

เปรียบเทียบและแสดงเฉพาะแถวที่มีค่า NULL ใน MySQL

การกรองแถวที่มีค่า NULL ด้วย IFNULL() ในเงื่อนไข WHERE

เราสามารถใช้ IFNULL() ภายในเงื่อนไข WHERE เพื่อแทนที่ค่า NULL ด้วยค่าเริ่มต้น แล้วค่อยเปรียบเทียบ ทำให้สามารถกรองแถวที่มี NULL ได้ตามตองการ

สร้างตารางและเพิ่มข้อมูล

mysql> CREATE TABLE DemoTable (Value1 INT, Value2 INT);
Query OK, 0 rows affected (0.75 sec)

mysql> INSERT INTO DemoTable VALUES(10, NULL);
mysql> INSERT INTO DemoTable VALUES(20, 40);
mysql> INSERT INTO DemoTable VALUES(3, NULL);

แสดงข้อมูลทั้งหมด

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+--------+--------+
| Value1 | Value2 |
+--------+--------+
| 10     | NULL   |
| 20     | 40     |
| 3      | NULL   |
+--------+--------+
3 rows in set (0.00 sec)

คำสั่งแสดงแถวที่ Value1 > Value2 (ถือ NULL เป็น 0)

mysql> SELECT * FROM DemoTable WHERE Value1 > IFNULL(Value2, 0);

ผลลัพธ์:

+--------+--------+
| Value1 | Value2 |
+--------+--------+
| 10     | NULL   |
| 3      | NULL   |
+--------+--------+
2 rows in set (0.00 sec)

คำอธิบาย

  • IFNULL(Value2, 0) : ถ้า Value2 เป็น NULL ให้ใช้ 0 แทน
  • แถว 1: Value1=10, Value2=NULL → IFNULL=0 → 10 > 0 จริง → เลือก
  • แถว 2: Value1=20, Value2=40 → IFNULL=40 → 20 > 40 เท็จ → ไม่เลือก
  • แถว 3: Value1=3, Value2=NULL → IFNULL=0 → 3 > 0 จริง → เลือก
  • เทคนิคนี้ช่วยให้เปรียบเทียบกับ NULL ได้โดยไม่ต้องเขียน Value2 IS NULL OR Value1 > Value2