Di MariaDB, IFNULL()
fungsi memungkinkan kita untuk mengganti nilai NULL dengan nilai lain.
Sintaks
IFNULL(expr1,expr2)
Jika expr1
bukan NULL
, IFNULL()
mengembalikan expr1
; jika tidak, ia mengembalikan expr2
.
Juga, dari MariaDB 10.3, NVL()
dapat digunakan sebagai alias untuk IFNULL()
fungsi. Oleh karena itu, kami memiliki opsi untuk menggunakan sintaks berikut sebagai gantinya:
NVL(expr1,expr2)
Hasilnya sama terlepas dari sintaks yang digunakan.
Contoh
Berikut adalah contoh dasar yang menggunakan NULL
konstan:
SELECT IFNULL( null, 'No Value' );
Hasil:
No Value
Dalam hal ini, saya menggunakan IFNULL()
untuk mengganti nilai NULL dengan No Value
.
Inilah yang terjadi ketika argumen pertama bukan NULL
:
SELECT IFNULL( 'Spicy', 'No Value' );
Hasil:
Spicy
Dalam hal ini, argumen pertama dikembalikan, karena bukan NULL
.
Contoh Basis Data
Misalkan kita menjalankan kueri berikut:
SELECT * FROM Employees;
Hasil:
empId name dept ----- ----- ----- 1 Jess Sales 2 Rohit NULL 3 Zohan Sales 4 Homer NULL
Kita dapat melihat bahwa dua baris memiliki nilai NULL di dept
kolom.
Dalam kueri berikut, kami menggunakan IFNULL()
untuk mengganti nilai NULL dengan nilai yang lebih berarti bagi pembaca:
SELECT
empId,
name,
IFNULL( dept, 'Not yet assigned' ) AS dept
FROM Employees;
Hasil:
empId name dept ----- ----- ---------------- 1 Jess Sales 2 Rohit Not yet assigned 3 Zohan Sales 4 Homer Not yet assigned
Ekspresi
Nilai saat ini dari argumen pertama dievaluasi. Oleh karena itu, jika kita memberikan ekspresi seperti berikut:
SELECT IFNULL( 3 * 7, 0 );
Kami mendapatkan ini:
21
Jadi, kami tidak mendapatkan 3 * 7
bagian. Kami mendapatkan hasil dari ekspresi itu (yang dalam hal ini adalah 21
).
Hal yang sama berlaku ketika hasil ekspresi adalah NULL
. Misalnya, jika kita menjalankan kode berikut:
SELECT IFNULL( 3 / 0, 0 );
Kami mendapatkan ini:
0.0000
Namun, ini adalah contoh yang berbahaya. Nol adalah sebuah nilai. NULL
tidak.
Mengembalikan nol ketika ada nilai NULL bisa menyesatkan atau bahkan sepenuhnya salah. Bayangkan jika kita berhadapan dengan harga. Kami bisa berakhir dengan harga nol, yang bisa jadi salah dan menghabiskan banyak uang bagi bisnis.
Oleh karena itu dalam kasus seperti itu biasanya lebih baik menggunakan nilai yang lebih bermakna yang menyampaikan kepada pembaca bahwa tidak ada nilai.
Contoh:
SELECT IFNULL( 3 / 0, 'No value' );
Hasil:
No value
NVL()
Fungsi
Dimulai dengan MariaDB 10.3, NVL()
adalah alias untuk IFNULL()
. Oleh karena itu, kita dapat mengganti IFNULL()
dengan NVL()
dalam salah satu contoh di atas.
Contoh:
SELECT NVL( 3 / 0, 'No value' );
Hasil:
No value