Di Oracle Database, COALESCE()
fungsi mengembalikan ekspresi non-null pertama daftar ekspresi.
Sintaks
Sintaksnya seperti ini:
COALESCE(expr [, expr ]...)
Setidaknya dua ekspresi harus dilewati.
Contoh
Berikut ini contoh untuk didemonstrasikan:
SELECT COALESCE(null, 7)
FROM DUAL;
Hasil:
7
Berikut beberapa contoh lainnya:
SET NULL 'null';
SELECT
COALESCE(null, null, 1, 2, 3) AS "r1",
COALESCE(1, null, 2, 3) AS "r2",
COALESCE(null, 3, 2, 1) AS "r3",
COALESCE(1, 2, 3, null) AS "r4",
COALESCE(null, null) AS "r5"
FROM DUAL;
Hasil:
r1 r2 r3 r4 r5 _____ _____ _____ _____ _______ 1 1 3 1 null
Kita dapat melihat bahwa COALESCE()
mengembalikan null
ketika semua argumen adalah null.
Mengenai baris pertama SET NULL 'null';
, saya menambahkannya agar sesi SQLcl saya mengembalikan null
setiap kali hasilnya nol.
Secara default, SQLcl dan SQL*Plus mengembalikan ruang kosong setiap kali null
terjadi sebagai akibat dari SQL SELECT
penyataan.
Namun, Anda dapat menggunakan SET NULL
untuk menentukan string berbeda yang akan dikembalikan. Di sini saya menetapkan bahwa string null
harus dikembalikan.
Contoh Basis Data
Misalkan kita menjalankan kueri berikut:
SET NULL 'null';
SELECT
LOCATION_ID,
STATE_PROVINCE
FROM LOCATIONS
ORDER BY LOCATION_ID ASC
FETCH FIRST 6 ROWS ONLY;
Hasil:
LOCATION_ID STATE_PROVINCE ______________ ___________________ 1000 null 1100 null 1200 Tokyo Prefecture 1300 null 1400 Texas 1500 California
Kita dapat melihat bahwa beberapa baris adalah null
di STATE_PROVINCE
kolom.
Berikut query lagi, kecuali kali ini kita menggunakan COALESCE()
terhadap STATE_PROVINCE
kolom:
SELECT
LOCATION_ID,
COALESCE(STATE_PROVINCE, 'N/A')
FROM LOCATIONS
ORDER BY LOCATION_ID ASC
FETCH FIRST 6 ROWS ONLY;
Hasil:
LOCATION_ID COALESCE(STATE_PROVINCE,'N/A') ______________ _________________________________ 1000 N/A 1100 N/A 1200 Tokyo Prefecture 1300 N/A 1400 Texas 1500 California
Jadi kami menggunakan COALESCE()
untuk mengembalikan N/A
setiap kali nilai nol terjadi.
COALESCE()
vs CASE
Berikut ini:
COALESCE(expr1, expr2)
Setara dengan ini:
CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END
Jumlah Argumen Tidak Valid
Memanggil fungsi tanpa meneruskan argumen apa pun menghasilkan kesalahan:
SELECT COALESCE()
FROM DUAL;
Hasil:
SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function"