การตรวจสอบค่า NULL / NOT NULL ใน MySQL
ใช้ IS NULL และ IS NOT NULL — ไม่ใช่ = NULL หรือ != NULL (เพราะ NULL ไม่เท่ากับอะไรเลย รวมถึงตัวมันเอง)
ไวยากรณ์
SELECT column_name IS NOT NULL FROM table_name;
-- คืน 1 = NOT NULL, 0 = NULL
สร้างตารางและข้อมูล
mysql> create table DemoTable1408 (
-> FirstName varchar(30)
-> );
Query OK, 0 rows affected (0.54 sec)
mysql> insert into DemoTable1408 values('Chris');
mysql> insert into DemoTable1408 values(''); -- Empty string (ไม่ใช่ NULL)
mysql> insert into DemoTable1408 values(NULL); -- NULL จริง
mysql> insert into DemoTable1408 values('David');
ข้อมูลในตาราง
+-----------+ | FirstName | +-----------+ | Chris | | | -- empty string | NULL | -- NULL | David | +-----------+
คำสั่งตรวจสอบ IS NOT NULL
mysql> select FirstName IS NOT NULL from DemoTable1408;
ผลลัพธ์
+-----------------------+ | FirstName IS NOT NULL | +-----------------------+ | 1 | -- Chris | 1 | -- empty string (ไม่ใช่ NULL) | 0 | -- NULL | 1 | -- David +-----------------------+
ความแตกต่าง: Empty String vs NULL
''(empty string) — เป็นค่าที่มีอยู่จริง ไม่ใช่ NULL →IS NOT NULL = 1NULL— ไม่มีค่า →IS NOT NULL = 0- ใช้
LENGTH(col) = 0หรือcol = ''ตรวจ empty string
การใช้งานใน WHERE clause
-- หาแถวที่มีค่า
WHERE FirstName IS NOT NULL
-- หาแถวที่เป็น NULL
WHERE FirstName IS NULL
-- หาแถวที่มีค่า และไม่ใช่ empty string
WHERE FirstName IS NOT NULL AND FirstName != ''
-- หรือ
WHERE TRIM(FirstName) != ''
ฟังก์ชันช่วยเหลือ
| ฟังก์ชัน | คำอธิบาย |
|---|---|
IFNULL(col, 'default') | คืน 'default' หาก col เป็น NULL |
COALESCE(col1, col2, 'default') | คืนค่าแรกที่ไม่ใช่ NULL |
NULLIF(col, '') | คืน NULL หาก col = '' (empty string) |
ISNULL(col) | เทียบเท่า IS NULL (คืน 1/0) |