Di MySQL, ISNULL()
fungsi memungkinkan kita untuk memeriksa apakah suatu nilai adalah null
atau tidak. Jika null
, lalu 1
dikembalikan, jika tidak 0
dikembalikan.
Sintaks
ISNULL(expr)
Contoh
Berikut adalah contoh sederhana untuk ditunjukkan:
SELECT ISNULL( null );
Hasil:
1
Dalam hal ini, ekspresinya adalah null
dan hasilnya adalah 1
.
Ini dia dengan non-null
nilai:
SELECT ISNULL( 'Cake' );
Hasil:
0
Kali ini hasilnya 0
(karena ekspresinya bukan null
).
Ekspresi
ISNULL()
memeriksa hasil ekspresi apa pun. Jadi jika kita melakukan hal berikut, misalnya:
SELECT ISNULL( 3 / 0 );
Kami mendapatkan ini:
1
Jadi meskipun kami tidak menentukan null
sebagai argumen, hasil dari ekspresi adalah null
, dan ISNULL()
mengembalikan 1
.
Ini dapat ditunjukkan lebih jelas dengan contoh berikut:
SELECT
3 / 0,
ISNULL( 3 / 0 );
Hasil:
+-------+-----------------+ | 3 / 0 | ISNULL( 3 / 0 ) | +-------+-----------------+ | NULL | 1 | +-------+-----------------+ 1 row in set, 2 warnings (0.00 sec)
Di kolom pertama kita dapat melihat bahwa perhitungan itu sendiri menghasilkan nilai nol, dan kolom kedua mengembalikan 1
.
Saat kami melakukannya, berikut adalah peringatannya:
SHOW WARNINGS
Hasil:
+---------+------+---------------+ | Level | Code | Message | +---------+------+---------------+ | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | +---------+------+---------------+
Kami diperingatkan bahwa kami mencoba membagi dengan nol (yang menghasilkan nilai nol).
Contoh Basis Data
Misalkan kita memiliki tabel database seperti ini:
SELECT * FROM Pets;
Hasil:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | | 9 | 3 | 1 | Woof | 2020-10-03 | | 10 | 4 | 5 | Ears | 2022-01-11 | +-------+-----------+---------+---------+------------+
Berikut kueri yang menggunakan ISNULL()
fungsi terhadap tabel itu:
SELECT
PetId,
PetName,
ISNULL( DOB ) AS "DOB is Missing?"
FROM Pets;
Hasil:
+-------+---------+-----------------+ | PetId | PetName | DOB is Missing? | +-------+---------+-----------------+ | 1 | Fluffy | 0 | | 2 | Fetch | 0 | | 3 | Scratch | 0 | | 4 | Wag | 0 | | 5 | Tweet | 0 | | 6 | Fluffy | 0 | | 7 | Bark | 1 | | 8 | Meow | 1 | | 9 | Woof | 0 | | 10 | Ears | 0 | +-------+---------+-----------------+
Dalam hal ini, kami membuat kolom yang menampilkan 1
untuk semua hewan peliharaan yang tidak memiliki apa pun di kolom DOB mereka.
Katakanlah kita ingin mengembalikan semua hewan peliharaan yang tidak mencantumkan tanggal lahir (yaitu DOB
mereka bidangnya adalah null
). Dalam hal ini, kita dapat melakukan hal berikut:
SELECT * FROM Pets
WHERE ISNULL(DOB) = 1;
Hasil:
+-------+-----------+---------+---------+------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------+ | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +-------+-----------+---------+---------+------+
Itu menghasilkan hasil yang sama dengan melakukan hal berikut:
SELECT * FROM Pets
WHERE DOB IS NULL;
Hasil:
+-------+-----------+---------+---------+------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------+ | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +-------+-----------+---------+---------+------+