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