NULL nghĩa là "không biết / chưa có" — khác hẳn số 0, chuỗi rỗng '' hay false. Vì là "không biết" nên đây là nguồn của nhiều bug khó thấy.
- Kiểm tra phải dùng
IS NULL/IS NOT NULL. Tuyệt đối không= NULL, vìNULL = NULLtrả vềNULL(không phảiTRUE) nênWHEREkhông khớp gì cả. - Hàm tổng hợp tự bỏ qua NULL —
AVG(score)chỉ trung bình các dòng có giá trị, không coi NULL là 0. - Thay NULL khi hiển thị:
COALESCE(phone, 'N/A')trả giá trị không-NULL đầu tiên.
Bẫy trong JOIN: nếu foreign key bị NULL thì INNER JOIN loại dòng đó — muốn giữ thì dùng LEFT JOIN rồi kiểm tra NULL ở kết quả.
NULL means "unknown / missing" — quite different from the number 0, an empty string '', or false. Because it is "unknown", it is the source of many subtle bugs.
- Check it with
IS NULL/IS NOT NULL. Never use= NULL, becauseNULL = NULLreturnsNULL(notTRUE), soWHEREmatches nothing. - Aggregate functions skip NULLs automatically —
AVG(score)averages only rows with a value, not treating NULL as 0. - Replace NULL on display:
COALESCE(phone, 'N/A')returns the first non-NULL value.
Trap in JOINs: if a foreign key is NULL, an INNER JOIN drops that row — to keep it, use a LEFT JOIN and check for NULL in the result.