Nhưng điều lưu ý khi làm việc với null trong sql
Bài viết sử dụng table Bricks để mô tả các ví dụ:
create table bricks (id integer not null primary key, color varchar(100) not null, quantity integer); INSERT INTO bricks (id, color, quantity) VALUES
(1, 'Red', 100),
(2, 'Blue', 50),
(3, 'Green', 75),
(4, 'Yellow', 30),
(5, 'Black', NULL),
(6, 'White', NULL);
1. Không giá trị nào bằng null
Khi so sánh bất kì giá trị nào với null, kết quả luôn luôn là "unknown".
Vd: Query so sánh bằng null luôn luôn trả về 0 row
select * from bricks where quantity = null;
2. Is null condition
Để làm việc với null-value, ta nên sử dụng "is null" condition.
Vd: Ta sẽ update lại câu query null-value thành:
select * from bricks where quantity is null;
3. So sánh với null
Nếu value của column có thể bằng null, nên lưu ý khi thực hiện so sánh trên range.
Vd: Nếu ta muốn lấy các viên gạch có số lượng còn trong kho nhỏ hơn 60 để nhập thêm thì câu Query sau đã vô tình loại bỏ những viên gạch có số lượng là null
select * from bricks where quantity < 60;
Nếu ta muốn đảm bảo kết quả Query bao gồm cả null value, ta có thể update như sau:
select * from bricks where quantity < 60 or quantity is null;
Ngoài ra SQL còn hỗ trợ ta các function để làm việc với null một cách dễ dàng:
3.1 IfNULL() và COALESCE()
2 Hàm ifnull() và coalesce() đều giúp chúng ta map null value với một giá trị cụ thể, khác nhau ở số lượng argument yều cầu truyền vào
IFNULL(expr1, expr2) -- Cho 2 arguments
COALESCE(expr1, expr2, ..., exprN) -- any arguments
Vd: