SQLite nullif()
function adalah fungsi praktis yang memungkinkan Anda memperlakukan nilai tertentu sebagai NULL saat diperlukan.
Jangan bingung dengan ifnull()
fungsi, yang melakukan sebaliknya – memungkinkan Anda untuk memperlakukan nilai NULL sebagai sesuatu yang lain.
nullif()
function menerima dua argumen, dan mengembalikan argumen pertamanya jika argumennya berbeda dan NULL jika argumennya sama.
Sintaks
Sintaksnya seperti ini:
nullif(X,Y)
Fungsi mencari argumennya dari kiri ke kanan untuk argumen yang mendefinisikan fungsi penyusunan dan menggunakan fungsi penyusunan itu untuk semua perbandingan string. Jika tidak ada argumen yang mendefinisikan fungsi penyusunan, maka BINARY akan digunakan.
Contoh
Berikut adalah contoh dasar untuk didemonstrasikan.
SELECT
nullif(123,0),
nullif(0,0),
nullif(123,123);
Hasil:
nullif(123,0) nullif(0,0) nullif(123,123) ------------- ----------- --------------- 123
Pada kolom pertama kedua nilai tersebut berbeda, sehingga nilai pertama dikembalikan.
Di kolom kedua kedua nilainya sama, jadi NULL dikembalikan.
Hal yang sama berlaku untuk kolom ketiga – kedua nilainya sama, jadi NULL dikembalikan.
Contoh Praktis
Berikut adalah contoh database yang menunjukkan penggunaan yang lebih praktis untuk nullif()
fungsi.
Ambil tabel berikut yang disebut Produk :
ProductId ProductName Price ---------- ------------- ---------- 1 Widget Holder 139.5 2 Widget Stick 89.75 3 Foo Cap 11.99 4 Free Widget 0.0 5 Free Foobar 0.0 6 Free Beer
Kita dapat melihat bahwa dua produk memiliki harga nol. Produk lain memiliki harga NULL.
Sekarang, bayangkan kita ingin mengetahui berapa banyak produk yang memiliki harga positif. Dengan kata lain, kami tidak ingin menyertakan produk yang memiliki harga atau nol (atau NULL dalam hal ini).
Untuk melakukan ini, kita dapat menggunakan nullif()
dalam hubungannya dengan count()
fungsi.
SELECT count(nullif(Price, 0.00))
FROM Products;
Hasil:
3
Kami mendapatkan 3 seperti yang diharapkan, yaitu berapa banyak baris yang memiliki nilai positif di Harga kolom.
Ini berfungsi karena count()
fungsi hanya menghitung nilai non-NULL. Dengan mengonversi jumlah nol menjadi NULL, kami dapat mengabaikan nilai tersebut dalam perhitungan kami.
Ini dia lagi tanpa nullif()
fungsi.
SELECT count(Price)
FROM Products;
Hasil:
5
Jadi dalam hal ini, ini termasuk jumlah nol dan kami mendapatkan 5. Itu masih mengabaikan baris 6 karena itu sebenarnya memiliki nilai NULL.