Dalam SQLite, coalesce()
fungsi mengembalikan salinan argumen non-NULL pertamanya, atau NULL jika semua argumen adalah NULL.
Ini mirip dengan ifnull()
fungsi, kecuali coalesce()
menerima lebih dari dua argumen (ifnull()
hanya menerima dua argumen).
Sintaks
Sintaksnya seperti ini:
coalesce(X,Y,...)
Artinya, Anda dapat memberikan dua atau lebih argumen. Fungsi tersebut kemudian akan mengembalikan yang pertama yang bukan NULL.
Contoh
Berikut ini contoh untuk didemonstrasikan.
SELECT coalesce(NULL,1);
Hasil:
1
Di sini saya memberikan dua argumen dan coalesce()
mengembalikan nilai non-NULL pertama, yang dalam hal ini adalah 1 .
Contoh Lainnya
Berikut adalah lebih banyak variasi untuk menunjukkan bagaimana coalesce()
menangani setiap kasus.
.mode line
SELECT
coalesce(NULL,NULL,1,2,3),
coalesce(1,NULL,2,3),
coalesce(NULL,3,2,1),
coalesce(1,2,3,NULL),
coalesce(NULL,NULL);
Hasil:
coalesce(NULL,NULL,1,2,3) = 1 coalesce(1,NULL,2,3) = 1 coalesce(NULL,3,2,1) = 3 coalesce(1,2,3,NULL) = 1 coalesce(NULL,NULL) =
Jadi sangat mudah. Ini hanya mengembalikan argumen pertama yang bukan NULL, terlepas dari berapa banyak argumen yang diberikan.
Perhatikan juga bahwa jika semua argumen adalah NULL, maka ia akan mengembalikan NULL.
Contoh Basis Data
Berikut ini contoh penggunaan coalesce()
fungsi dalam kueri basis data.
.mode column
SELECT
CustomerId,
coalesce(Fax, 'N/A') AS Fax
FROM Customer
LIMIT 5;
Hasil:
CustomerId Fax ---------- ------------- 1 +55 (12) 3923 2 N/A 3 N/A 4 N/A 5 +420 2 4172 5
Berikut tampilannya tanpa menggunakan coalesce()
fungsi:
.mode column
SELECT
CustomerId,
Fax
FROM Customer
LIMIT 5;
Hasil:
CustomerId Fax ---------- ------------------ 1 +55 (12) 3923-5566 2 3 4 5 +420 2 4172 5555
Jadi coalesce()
function dapat berguna untuk mengembalikan string yang bermakna alih-alih NULL.
Dengan Tiga Argumen
Berikut ini contoh menambahkan argumen ketiga. Ini memungkinkan kita untuk menjalankan beberapa opsi sebelum tiba di NULL.
SELECT
CustomerId,
coalesce(Fax, Email, 'N/A') AS "Fax/Email"
FROM Customer
LIMIT 5;
Hasil:
CustomerId Fax/Email ---------- ---------------------- 1 +55 (12) 3923-5566 2 [email protected] 3 [email protected] 4 [email protected] 5 +420 2 4172 5555