Hàm NULL trong SQL
- Trang trước SQL Nulls
- Trang tiếp theo Kiểu dữ liệu 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
- Trang trước SQL Nulls
- Trang tiếp theo Kiểu dữ liệu trong SQL