Sebagian besar DBMS utama menyediakan fungsi untuk mengganti nilai null dengan nilai lain.
Tetapi nama fungsi cenderung berbeda di seluruh DBMS. Misalnya, SQL Server memiliki ISNULL()
fungsi, sementara yang lain (seperti MySQL, MariaDB, dan SQLite) memiliki IFNULL()
berfungsi untuk melakukan hal yang sama.
Namun, untuk membingungkan, MySQL dan MariaDB masing-masing memiliki ISNULL()
fungsi yang bekerja secara berbeda dengan fungsi SQL Server dengan nama yang sama (implementasi MySQL dan MariaDB hanya menerima satu argumen, dan mengembalikan 1
jika null
dan 0
jika tidak).
Bagaimanapun, dalam kasus Oracle Database, kita dapat menggunakan NVL()
berfungsi untuk mengganti nilai null dengan nilai lain.
Sebenarnya, Oracle Database juga memiliki NVL2()
fungsi yang memungkinkan kita memberikan nilai lain untuk digunakan jika argumen pertama bukan null
.
Jika kita hanya ingin menguji apakah suatu nilai adalah null
atau tidak, kita dapat menggunakan IS NULL
kondisi (atau IS NOT NULL
untuk tes sebaliknya).
NVL()
Fungsi
Berikut adalah contoh yang menunjukkan bagaimana NVL()
fungsi berfungsi:
SELECT NVL(null, 'Run')
FROM DUAL;
Hasil:
Run
Dalam hal ini, argumen pertama adalah null
dan argumen kedua dikembalikan.
Inilah yang terjadi ketika argumen pertama bukan null
:
SELECT NVL('Walk', 'Run')
FROM DUAL;
Hasil:
Walk
Argumen pertama dikembalikan.
NVL2()
Fungsi
Seperti yang disebutkan, Oracle Database juga memberi kita NVL2()
fungsi. Fungsi ini memungkinkan kita untuk memberikan nilai lain untuk digunakan jika argumen pertama bukan null
.
Berikut ini contoh cara kerjanya:
SELECT NVL2(null, 2, 3)
FROM DUAL;
Hasil:
3
Argumen pertama adalah null
dan argumen ketiga dikembalikan.
Inilah yang terjadi ketika argumen pertama bukan null
:
SELECT NVL2(1, 2, 3)
FROM DUAL;
Hasil:
2
Argumen kedua dikembalikan.
IS NULL
dan IS NOT NULL
Ketentuan
Jika kita hanya ingin mengetahui apakah suatu nilai adalah null
, kita dapat menggunakan IS NULL
kondisi perbandingan. Sebagai alternatif, kita dapat menggunakan IS NOT NULL
untuk memeriksa apakah itu bukan null
.
Misalkan kita memiliki tabel berikut:
SELECT * FROM Autoparts
WHERE Price IS NULL;
Hasil:
ID | OE# | HARGA | MODEL |
---|---|---|---|
2 | 62150B3278 | – | CAMRY |
1 | 62150A3278 | 168 | HILUX |
Dalam hal ini, PRICE
kolom berisi nilai nol untuk baris pertama, tetapi tidak untuk baris kedua.
Berikut ini contoh penggunaan IS NULL
terhadap tabel itu:
SELECT * FROM Autoparts
WHERE Price IS NULL;
Hasil:
ID | OE# | HARGA | MODEL |
---|---|---|---|
2 | 62150B3278 | – | CAMRY |
Hanya baris dengan harga nol yang dikembalikan.
Inilah yang terjadi ketika kita menggunakan IS NOT NULL
:
SELECT * FROM Autoparts
WHERE Price IS NOT NULL;
Hasil:
ID | OE# | HARGA | MODEL |
---|---|---|---|
1 | 62150A3278 | 168 | HILUX |
Baris lainnya dikembalikan.