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
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Fungsi NVL2
Mengembalikan salah satu dari dua nilai berdasarkan apakah ekspresi tertentu mengevaluasi ke NULL atau NOT NULL.
Sintaksis
NVL2 ( expression, not_null_return_value, null_return_value )
Argumen
- 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
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
Fungsi DECODEdapat 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
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