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