Di Oracle Database, NVL2()
fungsi memungkinkan kita untuk mengganti nilai nol dengan nilai lain.
Ini mirip dengan NVL()
fungsi, kecuali bahwa ia menerima tiga argumen, bukan dua. Ini memungkinkan kita untuk menentukan nilai yang berbeda untuk dikembalikan jika argumen pertama bukan null.
Sintaks
Sintaksnya seperti ini:
NVL2(expr1, expr2, expr3)
Jika expr1
bukan nol, maka NVL2
mengembalikan expr2
. Jika expr1
adalah nol, maka NVL2
mengembalikan expr3
.
Contoh
Berikut ini contoh untuk didemonstrasikan:
SELECT NVL2(null, 2, 3)
FROM DUAL;
Hasil:
3
Argumen pertama adalah null dan argumen ketiga dikembalikan.
Dan inilah yang terjadi ketika argumen pertama tidak nol:
SELECT NVL2(1, 2, 3)
FROM DUAL;
Hasil:
2
Bila Nilai Penggantinya Null
Jika argumen kedua atau ketiga adalah nol, maka Anda bisa berakhir dengan hasil nol.
Contoh:
SET NULL '(null)';
SELECT
NVL2(1, null, 3) AS "r1",
NVL2(null, 2, null) AS "r2"
FROM DUAL;
Hasil:
r1 r2 _________ _________ (null) (null)
Mengenai baris pertama SET NULL '(null)';
, saya menambahkan baris ini sehingga sesi SQLcl saya mengembalikan nilai itu setiap kali hasilnya nol.
Secara default, SQLcl dan SQL*Plus mengembalikan ruang kosong setiap kali null
terjadi sebagai akibat dari SQL SELECT
penyataan.
Namun, Anda dapat menggunakan SET NULL
untuk menentukan string berbeda yang akan dikembalikan (seperti yang telah saya lakukan di sini).
Jumlah Argumen Tidak Valid
Memanggil fungsi tanpa meneruskan argumen apa pun menghasilkan kesalahan:
SELECT NVL2()
FROM DUAL;
Hasil:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Dan memberikan terlalu banyak argumen juga menyebabkan kesalahan:
SELECT NVL2(1, 2, 3, 4)
FROM DUAL;
Hasil:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"