Hàm NULL trong SQL
Hàm IFNULL (), ISNULL (), COALESCE () và NVL () trong SQL
Nhìn vào bảng "Sản phẩm" 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.
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 MySQL IFNULL()
cho phép bạn trả về một giá trị thay thế nếu một biểu thức là NULL:
SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products;
hoặc chúng ta có thể sử dụng hàm như sau:
COALESCE()
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;
Máy chủ SQL
Hàm SQL Server
ISNULL()
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;
Truy cập MS
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;