วิธีกรองข้อมูลข้ามค่า NULL และ Empty String ใน MySQL
ใช้เงื่อนไข IS NOT NULL และ <> '' (หรือ != '') ร่วมกันใน WHERE
SELECT * FROM yourTableName WHERE yourColumn IS NOT NULL AND yourColumn <> '';
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มข้อมูลผสม NULL, Empty String, และ Space:
mysql> create table DemoTable (Id int, FirstName varchar(20)); mysql> insert into DemoTable values(100,'Larry'); mysql> insert into DemoTable values(101,''); mysql> insert into DemoTable values(102,'Chris'); mysql> insert into DemoTable values(103,NULL); mysql> insert into DemoTable values(104,' '); mysql> insert into DemoTable values(105,'Robert'); mysql> insert into DemoTable values(106,NULL);
ข้อมูลทั้งหมด:
+------+-----------+ | Id | FirstName | +------+-----------+ | 100 | Larry | | 101 | | | 102 | Chris | | 103 | NULL | | 104 | | | 105 | Robert | | 106 | NULL | +------+-----------+
คิวรีข้าม NULL และ Empty String:
mysql> select * from DemoTable where FirstName IS NOT NULL AND FirstName <> '';
+------+-----------+ | Id | FirstName | +------+-----------+ | 100 | Larry | | 102 | Chris | | 105 | Robert | +------+-----------+
หมายเหตุ: แถว Id 104 (Space ' ') ไม่ถูกกรองออก เพราะไม่ใช่ Empty String | หากต้องการกรอง Space ด้วย ให้ใช้ TRIM(FirstName) <> '' หรือ FirstName NOT REGEXP '^[[:space:]]*$'
รูปแบบย่อ (MySQL 8.0+): WHERE FirstName IS NOT NULL AND FirstName != '' (ทำงานเหมือนกัน)