Hàm SQL NULL
Các hàm SQL IFNULL(), ISNULL(), COALESCE() và NVL()
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ử cột "UnitsOnOrder" là tùy chọn và có thể chứa các giá trị NULL.
Hãy xem câu lệnh CHỌN 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 thì kết quả sẽ là NULL.
Các giải pháp
MySQL
Hàm IFNULL()
của MySQL cho phép bạn trả về một giá trị thay thế nếu 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 COALESCE()
, như thế này:
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;
Máy chủ SQL
Hàm ISNULL()
của SQL Server cho phép bạn trả về một giá trị thay thế khi biểu thức là NULL:
SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products;
hoặc chúng ta có thể sử dụng hàm COALESCE()
, như thế này:
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(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ị null, nếu không thì FALSE (0):
SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products;
Lời tiên tri
Hàm Oracle NVL()
đạt được kết quả tương tự:
SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products;
hoặc chúng ta có thể sử dụng hàm COALESCE()
, như thế này:
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;