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

แสดงเฉพาะค่า NOT NULL จากคอลัมน์ที่มี NULL และ NOT NULL ใน MySQL

ใช้เงื่อนไข IS NOT NULL ในคำสั่ง WHERE หรือ INSERT ... SELECT เพื่อกรองเฉพาะแถวที่คอลัมน์ไม่เป็น NULL

Syntax

SELECT * FROM table_name WHERE column_name IS NOT NULL;

ตัวอย่างการใช้งาน

1. สร้างตารางและเพิ่มข้อมูล (มี NULL)

mysql> create table DemoTable1 ( DueDate date ); Query OK, 0 rows affected (0.00 sec)

mysql> insert into DemoTable1 values('2019-09-10'); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1 values(NULL); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1 values('2019-11-10'); Query OK, 1 row affected (0.00 sec)

ข้อมูลทั้งหมด:

mysql> select * from DemoTable1;
+------------+
| DueDate    |
+------------+
| 2019-09-10 |
| NULL       |
| 2019-11-10 |
+------------+
3 rows in set (0.00 sec)

2. สร้างตารางใหม่และคัดลอกเฉพาะ NOT NULL

mysql> create table DemoTable2 ( AdmissionDate date ); Query OK, 0 rows affected (0.00 sec)

mysql> insert into DemoTable2(AdmissionDate)
    -> select DueDate from DemoTable1 where DueDate IS NOT NULL;
Query OK, 2 rows affected (0.00 sec) Records: 2  Duplicates: 0  Warnings: 0

3. ตรวจสอบผลลัพธ์

mysql> select * from DemoTable2;
+---------------+
| AdmissionDate |
+---------------+
| 2019-09-10    |
| 2019-11-10    |
+---------------+
2 rows in set (0.00 sec)

วิธีอื่นๆ ในการกรอง NOT NULL

วิธีSyntaxคำอธิบาย
WHERE IS NOT NULLWHERE col IS NOT NULLมาตรฐาน แนะนำใช้
WHERE <> NULLWHERE col <> NULLผิด - NULL ไม่เทียบได้ด้วย =/<>
COALESCEWHERE COALESCE(col, '') <> ''แปลง NULL เป็น '' แล้วเปรียบเทียบ
IFNULLWHERE IFNULL(col, '') <> ''MySQL เฉพาะ

นับจำนวน NOT NULL

SELECT COUNT(column_name) FROM table_name; -- นับเฉพาะ NOT NULL
SELECT COUNT(*) FROM table_name WHERE column_name IS NOT NULL; -- เทียบเท่า

สรุป: ใช้ IS NOT NULL เพื่อกรองเฉพาะค่าที่ไม่เป็น NULL ทั้งใน SELECT, UPDATE, DELETE และ INSERT ... SELECT เป็นมาตรฐาน SQL ที่รองรับในทุก Database