Isnull là gì

Bài này cafedev chia sẻ cho ace về cách sử dụng giá trị NULL và hàm IFNULL(), ISNULL(), COALESCE(), and NVL() trong SQL để lấy ra dữ liệu theo ý muốn của mình.

Lưu ý: Các bạn tham khảo bài giới thiệu này để lấy dữ liệu mẫu, cấu trúc và chạy các ví dụ của toàn bộ series này nha. Khi bạn thực hành mà không tìm thấy kết quả và không xảy ra lỗi thì có thể dữ liệu của bạn không tồn tại, vì vậy, bạn có thể insert thêm data vào bảng và thực hành lại nha.

Nội dung chính

1. Giá trị NULL là gì?

Trường có giá trị NULL là trường không có giá trị.

Nếu một trường trong bảng là tùy chọn, có thể chèn dữ liệu mới hoặc cập nhật dữ liệu mà không cần thêm giá trị vào trường này. Sau đó, trường sẽ được lưu với giá trị NULL.

Lưu ý: Giá trị NULL khác với giá trị 0 hoặc trường chứa khoảng trắng. Trường có giá trị NULL là trường đã bị bỏ trống trong quá trình tạo dữ liệu!

2. Làm thế nào để kiểm tra giá trị NULL?

Không thể kiểm tra các giá trị NULL bằng các toán tử so sánh, chẳng hạn như =, .

Thay vào đó, chúng ta sẽ phải sử dụng các toán tử IS NULL và IS NOT NULL.

Cú pháp IS NULL

SELECT column_names
FROM table_name
WHERE column_name IS NULL; 

Cú pháp IS NOT NULL

SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL; 

Ví dụ: IS NULL

Toán tử IS NULL được sử dụng để kiểm tra các giá trị trống (giá trị NULL).

SQL sau liệt kê tất cả các khách hàng có giá trị NULL trong trường “Address”:

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: [email protected]
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NULL;

Mẹo: Luôn sử dụng IS NULL để tìm kiếm các giá trị NULL.

Ví dụ: IS NOT NULL

Toán tử IS NOT NULL được sử dụng để kiểm tra các giá trị không trống (giá trị NOT NULL).

SQL sau liệt kê tất cả các khách hàng có giá trị trong trường “Address”:

SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NOT NULL;

3. Hàm IFNULL(), ISNULL(), COALESCE(), and NVL()

Ta có bảng:

P_IdProductNameUnitPriceUnitsInStockUnitsOnOrder1Jarlsberg10.4516152Mascarpone32.5623 3Gorgonzola15.67920

Giả sử rằng cột “UnitsOnOrder” là tùy chọn và có thể chứa giá trị NULL.

Nhìn vào câu lệnh SELECT sau:

SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)
FROM Products; 

Trong ví dụ trên, nếu bất kỳ giá trị “UnitsOnOrder” nào là NULL, kết quả sẽ là NULL.

Các giải pháp

MySQL

Hàm IFNULL () trong MySQL cho phép bạn trả về một giá trị thay thế nếu một biểu thức là NULL:

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: [email protected]
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products;

hoặc chúng ta có thể sử dụng hàm COALESCE (), như sau:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;

SQL Server

Hàm ISNULL () của SQL Server cho phép bạn trả về một giá trị thay thế khi một biểu thức là NULL:

SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products; 

MS Access

Hàm MS Access IsNull () trả về TRUE (-1) nếu biểu thức là giá trị rỗng, ngược lại FALSE (0):

SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products; 

Oracle

Hàm Oracle NVL () đạt được kết quả tương tự:

SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products; 

Lưu ý: Các bạn tham khảo bài giới thiệu này để lấy dữ liệu mẫu và chạy các ví dụ của toàn bộ series này nha. Khi bạn thực hành mà không tìm thấy kết quả và không xảy ra lỗi thì có thể dữ liệu của bạn không tồn tại, vì vậy, bạn có thể insert thêm data vào bảng và thực hành lại nha.

Full series tự học SQL từ cơ bản tới nâng cao tại đây nha.

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Thế nào là giá trị NULL?

NULL là một giá trị đặc biệt có mặt trong tất cả các loại dữ liệu, từ kiểu số, ngày, chuỗi, đến bit… Nó đại diện cho giá trị “không biết”, hoặc “không tồn tại”. NULL không trùng với số 0 của kiểu số và cũng không trùng với chuỗi trống (”) của kiểu chuỗi.

IS NOT NULL SQL là gì?

Trong SQL, mặc định mỗi cột có thể chứa các giá trị NULL. Ràng buộc NOT NULL sẽ không cho phép một cột chứa các giá trị NULL. Điều này sẽ buộc một trường luôn chứa ít nhất một giá trị, có nghĩa bạn không thể chèn bản ghi mới hay cập nhật một bảng ghi mà không thêm một giá trị vào trường này (để trống).

IS NULL là gì?

IS NULL từ khóa thực hiện so sánh Boolean. Nó trả về true nếu giá trị cung cấp là NULL và trả về false nếu giá trị cung cấp không phải là NULL. “NOT NULL từ khóa thực hiện so sánh Boolean.

Union trống SQL là gì?

Ý nghĩa của UNION Toán tử UNION được sử dụng để kết hợp tập hợp kết quả của hai hoặc nhiều câu lệnh SELECT. Mỗi câu lệnh SELECT với UNION phải có cùng số lượng cột, các cột phải có cùng kiểu dữ liệu, các cột trong mỗi câu lệnh SELECT phải có cùng trật tự.