Di MariaDB, 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, 'Red', 'Black');
Hasil:
Red
Dalam hal ini, Red
adalah nilai non-NULL pertama, jadi COALESCE()
mengembalikan nilai tersebut.
Black
juga bukan NULL, tetapi muncul setelah Red
dan tidak dikembalikan.
Contoh Basis Data
Misalkan kita menjalankan kueri berikut:
SELECT
PetName,
DOB AS "Date of Birth"
FROM Pets;
Dan kita mendapatkan hasil sebagai berikut:
+---------+---------------+ | PetName | Date of Birth | +---------+---------------+ | 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 | +---------+---------------+
Kita dapat melihat bahwa dua baris terakhir memiliki nilai NULL di kolom DOB.
Jika kita ingin mengganti NULL
dengan nilai lain, kita dapat mengubah kueri sebagai berikut:
SELECT
PetName,
COALESCE(DOB, 'None Supplied') AS "Date of Birth"
FROM Pets;
Hasil:
+---------+---------------+ | PetName | Date of Birth | +---------+---------------+ | 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 | +---------+---------------+
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, 5 * 2 );
Kami mendapatkan ini:
10
Ketika Semua Nilai NULL
Jika semua nilai adalah NULL
, COALESCE()
mengembalikan NULL
:
SELECT COALESCE( null, null );
Hasil:
NULL
COALESCE()
vs IFNULL()
Saat digunakan dengan dua nilai, COALESCE()
bekerja sama dengan IFNULL
:
SET @a = null, @b = 52;
SELECT
COALESCE(@a, @b),
IFNULL(@a, @b);
Hasil:
+------------------+----------------+ | COALESCE(@a, @b) | IFNULL(@a, @b) | +------------------+----------------+ | 52 | 52 | +------------------+----------------+
Jumlah Argumen Tidak Valid
Menggunakan COALESCE()
tanpa argumen apa pun menghasilkan kesalahan:
SELECT COALESCE();
Hasil:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1