Conditional
DuckDB
NVL2
Mengembalikan value_if_not_null jika expression tidak NULL, jika NULL mengembalikan value_if_null. Lebih fleksibel dari NVL.
Tipe hasil:
Sama dengan tipe value parametersDiperbarui: 6 Jan 2026Syntax
SQL
NVL2(expression, value_if_not_null, value_if_null)Parameter
expressionanywajib
Nilai yang akan dicek NULL-nya
value_if_not_nullanywajib
Nilai yang dikembalikan jika expression TIDAK NULL
value_if_nullanywajib
Nilai yang dikembalikan jika expression NULL
Contoh Penggunaan
Status Berdasarkan NULL
SQL
1 SELECT 2 customer_name, 3 email, 4 NVL2(email, 'Has Email', 'No Email') as email_status 5 FROM customers;
Menentukan status berdasarkan ada tidaknya email.
Hasil
| customer_name | email_status | |
|---|---|---|
| Budi | budi@email.com | Has Email |
| Ani | NULL | No Email |
| Eko | eko@email.com | Has Email |
Conditional Commission
SQL
1 SELECT 2 salesperson, 3 manager_id, 4 NVL2(manager_id, 'Standard Rate', 'Manager Rate') as commission_type, 5 NVL2(manager_id, 0.05, 0.10) as commission_rate 6 FROM sales_team;
Manager (NULL manager_id) dapat rate berbeda.
Hasil
| salesperson | manager_id | commission_type | commission_rate |
|---|---|---|---|
| Budi | 1 | Standard Rate | 0.05 |
| Ani | 1 | Standard Rate | 0.05 |
| Eko | NULL | Manager Rate | 0.10 |
Display Value vs Calculation Value
SQL
1 SELECT 2 product_name, 3 discount_percent, 4 NVL2(discount_percent, 5 CONCAT(discount_percent::VARCHAR, '% OFF'), 6 'Regular Price' 7 ) as display_text 8 FROM products;
Menampilkan teks berbeda berdasarkan ada tidaknya discount.
Hasil
| product_name | discount_percent | display_text |
|---|---|---|
| Laptop | 10 | 10% OFF |
| Phone | NULL | Regular Price |
| Tablet | 5 | 5% OFF |