Mặc dù hầu hết các ứng dụng sẽ có một số dạng công nghệ phía máy chủ hoặc thậm chí phía máy khách có thể được sử dụng để lọc ra các kết quả truy vấn cơ sở dữ liệu có thể chứa NULL
hoặc các giá trị trống, sử dụng ngôn ngữ khác và gánh nặng bổ sung của việc thực thi mã thường tốn kém hơn cho máy chủ và trên thực tế, phần lớn là không cần thiết.
Thay vào đó, bên dưới chúng ta sẽ khám phá ngắn gọn cách sử dụng MySQL engine để thực hiện tác vụ này, chỉ lấy các bản ghi mà bạn mong muốn trong khi loại trừ những bản ghi có pesky NULL
các cột trong hỗn hợp.
KHÔNG PHẢI là Toán tử So sánh ĐẦY ĐỦ
Cho đến nay, phương pháp đơn giản và dễ hiểu nhất để đảm bảo tập kết quả của một cột cụ thể không chứa NULL
giá trị là sử dụng IS NOT NULL
toán tử so sánh.
Ví dụ:nếu chúng tôi muốn chọn tất cả các bản ghi trong books
của chúng tôi bảng trong đó primary_author
cột không NULL
, truy vấn có thể trông giống như sau:
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
primary_author IS NOT NULL;
Vì IS NOT NULL
hoạt động giống như bất kỳ bộ so sánh nào khác, nó có thể được kết hợp với WHERE
khác các mệnh đề để lọc thêm kết quả, giống như thể bạn đang sử dụng =
, >
, <
, LIKE
và các toán tử so sánh tiêu chuẩn khác.
Lọc NULL từ Nhiều Cột
Trong một số trường hợp, bạn có thể muốn truy xuất kết quả trong đó không NULL
các giá trị hiện diện trên nhiều cột. Ví dụ:chúng tôi có một số bản ghi trong books
bảng:
id | title | primary_author | published_date
1 | The Hobbit | Tolkien | 09-21-1937
2 | The Silmarillion | Tolkien | 09-15-1977
3 | The Name of the Wind | Rothfuss | 03-27-2007
4 | The Wise Man's Fear | Rothfuss | 03-01-2011
5 | The Doors of Stone | Rothfuss | NULL
6 | Beowulf | NULL | 01-01-1000
Hãy lưu ý rằng Những cánh cửa bằng đá (id 5
) chưa được xuất bản và do đó là published_date
là NULL
. Tương tự, Beowulf (id 6
) - bài thơ sử thi tiếng Anh cổ nổi tiếng - không có tác giả nào được biết đến, vì vậy primary_author
là NULL
.
Trong trường hợp này, chúng tôi có thể muốn truy vấn các kết quả chỉ chứa bốn đầu tiên bản ghi, do đó loại trừ hai bản ghi cuối cùng có NULL
các giá trị trong primary_author
hoặc published_date
. Điều này có thể được thực hiện với câu lệnh đơn giản này bằng cách sử dụng AND
với nhiều toán tử so sánh:
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
(
primary_author IS NOT NULL
AND
published_date IS NOT NULL
);
Lưu ý:Không bắt buộc phải có dấu ngoặc đơn nhưng bạn nên đặt các bộ so sánh được nhóm lại với nhau để dễ đọc hơn.
Đây là bạn có nó; một toán tử so sánh đơn giản có thể được sử dụng để lọc ra bất kỳ và tất cả NULL
giá trị trong hồ sơ của bạn.