Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Làm việc với NULL: IS NULL và IS NOT NULL trong MySQL

Tóm tắt

MySQL dùng IS NULL và IS NOT NULL để kiểm tra giá trị NULL. **Không bao giờ dùng = NULL hoặc != NULL** – luôn trả về UNKNOWN.

Ví dụ

1. Tạo bảng

CREATE TABLE NULL_Demo (
    UserId INT,
    UserName VARCHAR(20),
    UserAddress VARCHAR(20)
);

2. Dữ liệu có NULL

INSERT INTO NULL_Demo VALUES
(12345, 'John', NULL),
(2345,  'Carol', 'UK'),
(233444, NULL,  NULL),
(NULL,   NULL,  NULL);

3. Truy vấn IS NOT NULL

SELECT * FROM NULL_Demo 
WHERE UserId = 2345 AND UserName = 'Carol' AND UserAddress IS NOT NULL;
+--------+----------+-------------+
| UserId | UserName | UserAddress |
+--------+----------+-------------+
| 2345   | Carol    | UK          |
+--------+----------+-------------+

4. Truy vấn IS NULL

SELECT * FROM NULL_Demo 
WHERE UserName = 'John' AND UserAddress IS NULL;
+--------+----------+-------------+
| UserId | UserName | UserAddress |
+--------+----------+-------------+
| 12345  | John     | NULL        |
+--------+----------+-------------+

Bảng so sánh

Biểu thứcKết quả khi giá trị là NULLKết quả khi giá trị không NULL
cot IS NULLTRUEFALSE
cot IS NOT NULLFALSETRUE
cot = NULLUNKNOWNUNKNOWN
cot != NULLUNKNOWNUNKNOWN
cot <=> NULLTRUEFALSE

<=> là toán tử "null-safe equal" – so sánh NULL = NULL ra TRUE.

Ứng dụng thường gặp

  • COALESCE(cot, 'default'): trả về giá trị đầu tiên không NULL.
  • IFNULL(cot, 0): thay NULL bằng 0 (chỉ 2 đối số).
  • NULLIF(cot1, cot2): trả về NULL nếu cot1 = cot2.
  • Index: MySQL **không index** giá trị NULL (trừ một số engine/case đặc biệt) – cột nhiều NULL index nhỏ hơn.