Conditional

NVL2

DuckDBDuckDB

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 2026

Syntax

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
1SELECT
2 customer_name,
3 email,
4 NVL2(email, 'Has Email', 'No Email') as email_status
5FROM customers;

Menentukan status berdasarkan ada tidaknya email.

Hasil
customer_nameemailemail_status
Budibudi@email.comHas Email
AniNULLNo Email
Ekoeko@email.comHas Email

Conditional Commission

SQL
1SELECT
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
6FROM sales_team;

Manager (NULL manager_id) dapat rate berbeda.

Hasil
salespersonmanager_idcommission_typecommission_rate
Budi1Standard Rate0.05
Ani1Standard Rate0.05
EkoNULLManager Rate0.10

Display Value vs Calculation Value

SQL
1SELECT
2 product_name,
3 discount_percent,
4 NVL2(discount_percent,
5 CONCAT(discount_percent::VARCHAR, '% OFF'),
6 'Regular Price'
7 ) as display_text
8FROM products;

Menampilkan teks berbeda berdasarkan ada tidaknya discount.

Hasil
product_namediscount_percentdisplay_text
Laptop1010% OFF
PhoneNULLRegular Price
Tablet55% OFF