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ó NULL
hay 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 NULL
là 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 đề SELECT
hoặ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 customers
bả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 DATE
hoặ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 đó.DATETIME
NOT 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 projects
bả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_date
cộ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_null
là 0. Hãy xem xét ví dụ sau.
Đầu tiên, đặt biến @@sql_auto_is_null
thành 1.
SET @@sql_auto_is_null = 1;
Thứ hai, chèn một hàng mới vào projects
bảng:
INSERT INTO projects(title,begin_date, complete_date) VALUES('MRP III','2010-01-01','2020-12-31');
Thứ ba, sử dụng IS NULL
toán tử để lấy giá trị được tạo của id
cộ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óNULL
hay không. Toán tửIS NULL
trả về một nếu giá trị làNULL
. IS NOT NULL
Trả 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/