MySQL IS NULL được dùng như thế nào ?

01/02/2023 - lượt xem
Chia sẻ
 
5/5 - (1 bình chọn)

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:

Các bạn có thể xem thêm ở đây: https://www.mysqltutorial.org/mysql-is-null/

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    5/5 - (1 bình chọn)

    Xem thêm nhiều bài tin mới nhất về Kiến thức

    Xem thêm