MySQL memiliki IFNULL()
fungsi yang memungkinkan kita mengganti nilai NULL dengan nilai lain dengan mudah.
Sintaks
IFNULL(expr1,expr2)
Jika expr1
bukan NULL
, IFNULL()
mengembalikan expr1
; jika tidak, ia mengembalikan expr2
.
Contoh
Berikut adalah contoh dasar yang menggunakan NULL
konstan:
SELECT IFNULL( null, 'n/a' );
Hasil:
n/a
Dalam hal ini, saya menggunakan IFNULL()
untuk mengganti nilai NULL dengan string n/a
.
Inilah yang terjadi ketika argumen pertama bukan NULL
:
SELECT IFNULL( 'Cow', 'n/a' );
Hasil:
Cow
Dalam hal ini, argumen pertama dikembalikan, karena bukan NULL
.
Contoh Basis Data
Misalkan kita menjalankan kueri berikut:
SELECT
PetName,
DOB
FROM Pets;
Hasil:
+---------+------------+ | PetName | DOB | +---------+------------+ | Fluffy | 2020-11-20 | | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | | Bark | NULL | | Meow | NULL | | Woof | 2020-10-03 | | Ears | 2022-01-11 | +---------+------------+
Kita dapat melihat bahwa dua baris memiliki nilai NULL di kolom DOB.
Dalam kueri berikut, kami menggunakan IFNULL()
untuk mengganti nilai NULL dengan nilai yang lebih berarti bagi pembaca:
SELECT
PetName,
IFNULL( DOB, 'None supplied' )
FROM Pets;
Hasil:
+---------+--------------------------------+ | PetName | IFNULL( DOB, 'None supplied' ) | +---------+--------------------------------+ | Fluffy | 2020-11-20 | | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | | Bark | None supplied | | Meow | None supplied | | Woof | 2020-10-03 | | Ears | 2022-01-11 | +---------+--------------------------------+
Ekspresi
Nilai saat ini dari argumen pertama dievaluasi. Oleh karena itu, jika kita memberikan ekspresi seperti berikut:
SELECT IFNULL( 2 * 5, 0 );
Kami mendapatkan ini:
10
Jadi, kami tidak mendapatkan 2 * 5
bagian. Kami mendapatkan hasil dari ekspresi itu (yang dalam hal ini adalah 10
).
Hal yang sama berlaku ketika hasil ekspresi adalah NULL
:
SELECT IFNULL( 2 / 0, 0 );
Kami mendapatkan ini:
0.0000
Itu membayar untuk berhati-hati meskipun. Nol adalah sebuah nilai. NULL
tidak.
Dalam contoh di atas saya mengembalikan nol ketika ada nilai NULL, tetapi ini bisa menyesatkan atau bahkan sepenuhnya salah. Bayangkan jika kita membagi harga, dan hasilnya adalah harga nol. Oke, jika kita membagi harga dengan nol, mungkin ada hal lain yang salah, tapi saya yakin Anda mengerti maksud saya.
Bagaimanapun, biasanya lebih baik menggunakan nilai yang lebih bermakna yang menyampaikan kepada pembaca bahwa tidak ada nilai.
Contoh:
SELECT IFNULL( 2 / 0, 'No value' );
Hasil:
No value