Hàm NULL trong SQL

Các hàm IFNULL(), ISNULL(), COALESCE() và NVL() trong SQL


Chúng ta nhìn vào bảng "Products" sau:

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 Jarlsberg 10.45 16 15
2 Mascarpone 32.56 23  
3 Gorgonzola 15.67 9 20

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

Chúng ta có câu lệnh SELECT sau:

Ví dụ

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 MySQL IFNULL() cho phép chúng ta trả về một giá trị thay thế nếu một biểu thức là NULL.

Ví dụ

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

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

Ví dụ

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

SQL SERVER

Hàm SQL Server ISNULL() cho phép chúng ta trả về một giá trị thay thế khi một biểu thức là NULL.

Ví dụ

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 là FALSE(0).

Ví dụ

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

Oracle

Hàm Oracle NVL() cũng có kết quả tương tự.

Ví dụ

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