+2

SQL - Nhưng điều lưu ý khi làm việc với null trong sql

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);

image.png

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;

image.png

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;

image.png

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;

image.png

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()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: image.png

image.png


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí