Di MySQL, COALESCE()
operator mengembalikan nilai non-NULL pertama dalam daftar, atau NULL jika tidak ada nilai non-NULL.
Sintaks
Sintaksnya seperti ini:
COALESCE(value,...)
Contoh
Berikut adalah contoh sederhana untuk ditunjukkan:
SELECT COALESCE(null, 'Fish', 'Rabbit');
Hasil:
Fish
Dalam hal ini, Fish
adalah nilai non-NULL pertama, jadi COALESCE()
mengembalikan nilai tersebut.
Rabbit
juga merupakan nilai non-NULL, tetapi muncul setelah Fish
dan tidak dikembalikan.
Ketika Semua Nilai NULL
Jika semua nilai adalah NULL
, COALESCE()
mengembalikan NULL
:
SELECT COALESCE( null, null );
Hasil:
NULL
Ekspresi
COALESCE()
mengembalikan nilai saat ini dari ekspresi pertama yang awalnya tidak mengevaluasi ke NULL
. Oleh karena itu, jika kita memberikan ekspresi seperti ini:
SELECT COALESCE( null, 2 * 10 );
Kami mendapatkan ini:
20
Contoh Basis Data
Misalkan kita menjalankan kueri berikut:
SELECT
PetName,
PetType
FROM Pets;
Dan kita mendapatkan hasil sebagai berikut:
PetName PetType ------- ------- Meow Cat Woof Dog Tweet Bird Awk NULL Moo Cow Omph NULL
Kita dapat melihat bahwa dua baris memiliki nilai NULL di kolom DOB.
Jika kita ingin mengganti NULL
dengan nilai lain, kita dapat mengubah kueri sebagai berikut:
SELECT
PetName,
COALESCE(PetType, 'Unknown') AS "PetType"
FROM Pets;
Hasil:
PetName PetType ------- ------- Meow Cat Woof Dog Tweet Bird Awk Unknown Moo Cow Omph Unknown
Dalam hal ini kami mengganti semua nilai NULL dengan string Unknown
.
Itu tidak perlu menjadi string. Berikut contoh lain yang menggantikan nilai NULL dengan bilangan bulat:
SELECT
EmployeeName,
Salary,
COALESCE(Salary, 0) AS "Salary (adjusted)"
FROM Employees;
Hasil:
EmployeeName Salary Salary (adjusted) -------------- ------ ----------------- Homer Einstein NULL 0 Bart Hawking 100000 100000
Jumlah Argumen Tidak Valid
Menggunakan COALESCE()
tanpa argumen apa pun menghasilkan kesalahan:
SELECT COALESCE();
Hasil:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1