Hàm NULL trong SQL

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

Xin xem bảng "Products" bên dưới:

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 máy tính 699 25 15
2 máy in 365 36  
3 điện thoại 280 159 57

Nếu "UnitsOnOrder" là tùy chọn và có thể chứa giá trị NULL.

Chúng ta sử dụng câu lệnh SELECT sau đây:

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

Trong ví dụ trên, nếu giá trị 'UnitsOnOrder' là NULL, thì kết quả sẽ là NULL.

Hàm ISNULL() của Microsoft được sử dụng để quy định cách xử lý giá trị NULL.

Hàm NVL(), IFNULL() và COALESCE() cũng có thể đạt được kết quả tương tự.

Ở đây, chúng ta muốn giá trị NULL là 0.

Dưới đây, nếu 'UnitsOnOrder' là NULL, điều này không có lợi cho việc tính toán, vì vậy nếu giá trị là NULL thì ISNULL() sẽ trả về 0.

SQL Server / MS Access

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

Oracle

Oracle không có hàm ISNULL(). Tuy nhiên, chúng ta có thể sử dụng hàm NVL() để đạt được kết quả tương tự:

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

MySQL

MySQL cũng có hàm tương tự ISNULL(). Tuy nhiên, cách hoạt động của nó khác một chút so với hàm ISNULL() của Microsoft.

Trong MySQL, chúng ta có thể sử dụng hàm IFNULL() như sau:

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