

 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 NOT 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*   
Sebuah ekspresi, seperti nama kolom, untuk dievaluasi untuk status null.

 *tidak\_null\_nilai\_pengembalian *   
Nilai dikembalikan jika * ekspresi di * evaluasi menjadi 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 dikembalikan jika * ekspresi di * evaluasi 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 ekspresi not-null dikem * balikan.

Jika * 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 dikem * balikan.
+ 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 num * erik 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 * ditransfer 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 * parameter * ekspresi * dan * 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 saja yang dipilih oleh fungsi, tetapi akan memiliki tipe data not * \_null\_return\_value. * *

Misalnya, dengan asumsi column1 adalah NULL, kueri berikut akan mengembalikan nilai yang sama. Namun, tipe data nilai pengembalian DECODE akan menjadi INTEGER dan tipe data nilai pengembalian NVL2 adalah 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
```