

 Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting [ blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/) yang diterbitkan pada 30 Juni 2025. 

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Fungsi NVL2
<a name="r_NVL2"></a>

Mengembalikan salah satu dari dua nilai berdasarkan apakah ekspresi tertentu mengevaluasi ke NULL atau TIDAK NULL.

## Sintaksis
<a name="r_NVL2-synopsis"></a>

```
NVL2 ( expression, not_null_return_value, null_return_value )
```

## Argumen
<a name="r_NVL2-arguments"></a>

 *ekspresi*   
Ekspresi, seperti nama kolom, yang akan dievaluasi untuk status null.

 *not\_null\_return\_value*   
Nilai yang dikembalikan jika *ekspresi* mengevaluasi ke NOT NULL. Nilai *not\_null\_return\_value* harus memiliki tipe data yang sama dengan *ekspresi* atau secara implisit dapat dikonversi ke tipe data tersebut.

 *null\_return\_value*   
Nilai yang dikembalikan jika *ekspresi* mengevaluasi ke NULL. Nilai *null\_return\_value* harus memiliki tipe data yang sama dengan *ekspresi* atau secara implisit dapat dikonversi ke tipe data tersebut.

## Jenis pengembalian
<a name="r_NVL2-return-type"></a>

Jenis pengembalian NVL2 ditentukan sebagai berikut:
+ Jika *not\_null\_return\_value atau null\_return\_value* adalah *null, tipe data dari ekspresi not-null dikembalikan*.

*Jika kedua *not\_null\_return\_value dan null\_return\_value* tidak null:*
+ Jika *not\_null\_return\_value dan *null\_return\_value** memiliki tipe data yang sama, tipe data tersebut dikembalikan.
+ Jika *not\_null\_return\_value dan null\_return\_value* *memiliki tipe data numerik yang berbeda, tipe data numerik terkecil yang kompatibel dikembalikan*.
+ Jika *not\_null\_return\_value dan null\_return\_value* *memiliki tipe data datetime yang berbeda, tipe data stempel waktu dikembalikan*.
+ *Jika *not\_null\_return\_value dan null\_return\_value* memiliki tipe data karakter yang berbeda, tipe data *not\_null\_return\_value* dikembalikan.*
+ *Jika *not\_null\_return\_value dan null\_return\_value* memiliki tipe data numerik dan non-numerik campuran, tipe data *not\_null\_return\_value* dikembalikan.*

**penting**  
*Dalam dua kasus terakhir di mana tipe data *not\_null\_return\_value dikembalikan, null\_return\_value* secara implisit dilemparkan ke tipe data tersebut.* Jika tipe data tidak kompatibel, fungsi gagal.

## Catatan penggunaan
<a name="nvl2-usage-notes"></a>

[Fungsi DECODE](r_DECODE_expression.md)dapat digunakan dengan cara yang mirip dengan NVL2 ketika *ekspresi* dan parameter *pencarian keduanya* nol. Perbedaannya adalah bahwa untuk DECODE, pengembalian akan memiliki nilai dan tipe data dari parameter *hasil*. *Sebaliknya, untuk NVL2, pengembalian akan memiliki nilai parameter *not\_null\_return\_value atau null\_return\_value, mana yang dipilih oleh fungsi, tetapi akan memiliki tipe data *not\_null\_return\_value**.*

Misalnya, dengan asumsi kolom1 adalah NULL, kueri berikut akan mengembalikan nilai yang sama. Namun, tipe data nilai pengembalian DECODE adalah INTEGER dan tipe data nilai pengembalian NVL2 akan menjadi VARCHAR.

```
select decode(column1, null, 1234, '2345');
select nvl2(column1, '2345', 1234);
```

## Contoh
<a name="r_NVL2-examples"></a>

Contoh berikut memodifikasi beberapa data sampel, kemudian mengevaluasi dua bidang untuk memberikan informasi kontak yang sesuai bagi pengguna: 

```
update users set email = null where firstname = 'Aphrodite' and lastname = 'Acevedo';

select (firstname + ' ' + lastname) as name, 
nvl2(email, email, phone) AS contact_info
from users 
where state = 'WA'
and lastname  like 'A%'
order by lastname, firstname;

name			     contact_info	
--------------------+-------------------------------------------
Aphrodite Acevedo	(906) 632-4407
Caldwell Acevedo 	Nunc.sollicitudin@Duisac.ca
Quinn Adams		  vel@adipiscingligulaAenean.com
Kamal Aguilar		quis@vulputaterisusa.com
Samson Alexander	 hendrerit.neque@indolorFusce.ca
Hall Alford		  ac.mattis@vitaediamProin.edu
Lane Allen		   et.netus@risusDonec.org
Xander Allison	   ac.facilisis.facilisis@Infaucibus.com
Amaya Alvarado	   dui.nec.tempus@eudui.edu
Vera Alvarez		 at.arcu.Vestibulum@pellentesque.edu
Yetta Anthony		enim.sit@risus.org
Violet Arnold		ad.litora@at.com
August Ashley		consectetuer.euismod@Phasellus.com
Karyn Austin		 ipsum.primis.in@Maurisblanditenim.org
Lucas Ayers		  at@elitpretiumet.com
```