SQL ISNULL() , NVL() , IFNULL() dan COALESCE() Fungsi
Lihatlah berikut "Products" table:
P_Id | Nama Produk | Patokan harga | UnitsInStock | UnitsOnOrder |
---|---|---|---|---|
1 | Jarlsberg | 10.45 | 16 | 15 |
2 | Sabar | 32,56 | 23 | |
3 | gorgonzola | 15,67 | 9 | 20 |
Misalkan bahwa "UnitsOnOrder" kolom adalah opsional, dan dapat berisi nilai NULL.
Kami memiliki pernyataan SELECT berikut:
SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products
Dalam contoh di atas, jika salah satu dari "UnitsOnOrder" nilai-nilai NULL, hasilnya adalah NULL.
Microsoft ISNULL() adalah fungsi yang digunakan untuk menentukan bagaimana kita ingin memperlakukan nilai NULL.
The NVL() , IFNULL() , dan COALESCE() fungsi juga dapat digunakan untuk mencapai hasil yang sama.
Dalam hal ini kita ingin nilai NULL menjadi nol.
Bawah ini, jika "UnitsOnOrder" adalah NULL tidak akan merugikan perhitungan, karena ISNULL() mengembalikan nol jika nilai NULL:
MS Access
SELECT ProductName,UnitPrice*(UnitsInStock+IIF(ISNULL(UnitsOnOrder),0,UnitsOnOrder))
FROM Products
SQL Server
SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products
Oracle
Oracle tidak memiliki ISNULL() fungsi. Namun, kita dapat menggunakan NVL() fungsi untuk mencapai hasil yang sama:
SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products
MySQL
MySQL memang memiliki ISNULL() fungsi. Namun, ia bekerja sedikit berbeda dari Microsoft ISNULL() fungsi.
Dalam MySQL kita dapat menggunakan IFNULL() fungsi, seperti ini:
SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products
atau kita dapat menggunakan COALESCE() fungsi, seperti ini:
SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products