Trong bài viết này này, bạn sẽ học cách sử dụng toán tử IS NULL trong MySQL để kiểm tra xem một giá trị có phải là NULL hay không.
Giới thiệu về toán tử MySQL IS NULL
Để kiểm tra xem một giá trị có NULLhay không, bạn sử dụng toán tử IS NULL. Đây là cú pháp cơ bản của toán tử IS NULL:
value IS NULL
Nếu giá trị là NULL, biểu thức trả về true. Và ngược lại nó trả về false.
Lưu ý rằng MySQL không có kiểu dựng sẵn BOOLEAN. Nó sử dụng TINYINT(1)để đại diện cho các BOOLEAN giá trị tức là đúng nghĩa là 1 và sai nghĩa là 0.
Bởi vì IS NULLlà một toán tử so sánh, bạn có thể sử dụng nó ở bất cứ đâu mà toán tử có thể được sử dụng, ví dụ như trong mệnh đề SELECThoặc .WHERE
Xem ví dụ sau:
SELECT 1 IS NULL, -- 0
0 IS NULL, -- 0
NULL IS NULL; -- 1
Để kiểm tra xem một giá trị có phải không NULL, bạn sử dụng toán tử IS NOT NULL:
value IS NOT NULL
Biểu thức này trả về true (1) nếu giá trị không phải là NULL. Ngược lại, nó trả về false (0).
Hãy xem xét ví dụ sau:
SELECT 1 IS NOT NULL, -- 1
0 IS NOT NULL, -- 1
NULL IS NOT NULL; -- 0
Các ví dụ về MySQL IS NULL
Chúng tôi sẽ sử dụng customersbảng trong cơ sở dữ liệu mẫu để lấy ví dụ.
Truy vấn sau đây sử dụng toán tử IS NULL để tìm những khách hàng không có đại diện bán hàng (salesrepemployeenumber):
SELECT
customerName,
country,
salesrepemployeenumber
FROM
customers
WHERE
salesrepemployeenumber IS NULL
ORDER BY
customerName;
Kết quả:
Ví dụ dưới đây sử dụng toán tử IS NOT NULL để lấy những khách hàng có đại diện bán hàng:
SELECT
customerName,
country,
salesrepemployeenumber
FROM
customers
WHERE
salesrepemployeenumber IS NOT NULL
ORDER BY
customerName;
kết quả:
MySQL IS NULL – các tính năng chuyên biệt
Để tương thích với các chương trình ODBC, MySQL hỗ trợ một số tính năng chuyên biệt của toán tử IS NULL.
1) Xử lý ngày ‘0000-00-00’
1) Nếu cột DATEhoặc có ràng buộc và chứa ngày đặc biệt , bạn có thể sử dụng toán tử để tìm các hàng đó.DATETIMENOT NULL'0000-00-00'IS NULL
Đầu tiên, tạo một bảng có tên projects:
CREATE TABLE IF NOT EXISTS projects (
id INT AUTO_INCREMENT,
title VARCHAR(255),
begin_date DATE NOT NULL,
complete_date DATE NOT NULL,
PRIMARY KEY(id)
);
Thứ hai, chèn một số hàng vào projectsbảng:
INSERT INTO projects(title,begin_date, complete_date)
VALUES('New CRM','2020-01-01','0000-00-00'),
('ERP Future','2020-01-01','0000-00-00'),
('VR','2020-01-01','2030-01-01');
Thứ ba, sử dụng toán tử IS NULL để chọn hàng có giá trị trong complete_datecột là '0000-00-00'.
SELECT * FROM projects WHERE complete_date IS NULL;
2) Ảnh hưởng của biến @@sql_auto_is_null
Nếu biến @@sql_auto_is_nullđược đặt thành 1, bạn có thể lấy giá trị của cột auto_increment sau khi thực hiện câu lệnh INSERT bằng cách sử dụng toán tử IS NULL.
Lưu ý rằng theo mặc định, biến @@sql_auto_is_nulllà 0. Hãy xem xét ví dụ sau.
Đầu tiên, đặt biến @@sql_auto_is_nullthành 1.
SET @@sql_auto_is_null = 1;
Thứ hai, chèn một hàng mới vào projectsbảng:
INSERT INTO projects(title,begin_date, complete_date)
VALUES('MRP III','2010-01-01','2020-12-31');
Thứ ba, sử dụng IS NULLtoán tử để lấy giá trị được tạo của idcột:
SELECT
id
FROM
projects
WHERE
id IS NULL;
Kết quả:
Tổng Kết
- Sử dụng toán tử
IS NULLđể kiểm tra xem một giá trị cóNULLhay không. Toán tửIS NULLtrả về một nếu giá trị làNULL. IS NOT NULLTrả về một nếu giá trị không phải làNULL.
Bài viết liên quan:
- Seri MySQL cơ bản
- Câu lệnh SELECT FROM trong MySQL
- MySQL SELECT
- MySQL AND, Cách Sử Dụng Toán Tử AND Trong MySQL / Mariadb
- Cách sử dụng toán tử LIKE trong MySQL
- Cách sử dụng toán tử LIMIT trong MySQL
Các bạn có thể xem thêm ở đây: https://www.mysqltutorial.org/mysql-is-null/