Dari MariaDB 10.3, NVL()
dapat digunakan sebagai alias untuk IFNULL()
fungsi. Oleh karena itu, kedua fungsi tersebut memungkinkan kita untuk mengganti nilai NULL dengan nilai lain.
Sintaks
NVL(expr1,expr2)
Jika expr1
bukan NULL
, NVL()
mengembalikan expr1
; jika tidak, ia mengembalikan expr2
.
Diberikan NVL()
adalah alias untuk IFNULL()
, kita juga dapat menggunakan sintaks berikut:
IFNULL(expr1,expr2)
Kedua sintaks di atas mengembalikan hasil yang sama.
Contoh
Berikut adalah contoh dasar yang menggunakan NULL
konstan:
SELECT NVL( null, 'No Value' );
Hasil:
No Value
Dalam hal ini, saya menggunakan NVL()
untuk mengganti nilai NULL dengan No Value
.
Inilah yang terjadi ketika argumen pertama bukan NULL
:
SELECT NVL( 'Spicy', 'No Value' );
Hasil:
Green
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 NVL()
untuk mengganti nilai NULL dengan nilai yang lebih berarti bagi pembaca:
SELECT
empId,
name,
NVL( 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 NVL( 4 * 10, 0 );
Kami mendapatkan ini:
40
Jadi, kami tidak mendapatkan 4 * 10
bagian. Kami mendapatkan hasil dari ekspresi itu (yang dalam hal ini adalah 40
).
Hal yang sama berlaku ketika hasil ekspresi adalah NULL
:
SELECT NVL( 4 / 0, 0 );
Hasil:
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.
Dalam kasus seperti itu, biasanya lebih baik menggunakan nilai yang lebih bermakna yang menyampaikan kepada pembaca bahwa tidak ada nilai.
Contoh:
SELECT NVL( 4 / 0, 'No value' );
Hasil:
No value
IFNULL()
Fungsi
Seperti yang disebutkan, NVL()
adalah alias untuk IFNULL()
. Oleh karena itu, kita dapat mengganti NVL()
dengan IFNULL()
dalam salah satu contoh di atas.
Contoh:
SELECT IFNULL( 4 / 0, 'No value' );
Hasil:
No value