Deskripsi Nvlsql. Konversi NVL untuk tipe data yang berbeda

Kami menyentuh fungsi bersarang sedikit lebih awal, sekarang kami akan mempertimbangkannya secara lebih rinci. Kami juga akan melihat fungsi untuk bekerja dengan nilai NULL dan fungsi yang membantu mengimplementasikan operasi percabangan dalam kueri.

Fungsi bersarang

Fungsi bersarang menggunakan nilai kembalian dari satu fungsi sebagai parameter input ke fungsi lain. Fungsi selalu mengembalikan hanya satu nilai. Oleh karena itu, Anda dapat memperlakukan hasil panggilan fungsi sebagai nilai literal saat Anda menggunakannya sebagai parameter untuk panggilan ke fungsi lain. Fungsi sebaris dapat disarangkan ke tingkat bersarang apa pun. Satu panggilan fungsi terlihat seperti ini

Fungsi1 (parameter1, parameter2,…) = hasil

Mengganti parameter fungsi dengan panggilan ke fungsi lain dapat menghasilkan ekspresi seperti

F1 (param1.1, F2 (param2.1, param2.2, F3 (param3.1)), param1.3)

Fungsi bersarang dievaluasi terlebih dahulu sebelum hasilnya digunakan sebagai input ke fungsi lain. Fungsi dievaluasi dari level nesting terdalam hingga tertinggi, dari kiri ke kanan. Ekspresi sebelumnya dieksekusi sebagai berikut

  1. Fungsi F3 (param1) dihitung dan nilai kembalian digunakan sebagai parameter ketiga untuk fungsi 2, sebut saja param2.
  2. Kemudian fungsi F2 (param1, param2.2, param2.3) dihitung dan nilai kembalian digunakan sebagai parameter kedua dari fungsi F1 - param1.2
  3. Terakhir, fungsi F1 (param1, param2, param1.3) dievaluasi dan dikembalikan ke program pemanggil.

Dengan demikian, fungsi F3 berada pada level bersarang ketiga.

Pertimbangkan permintaannya

pilih next_day (last_day (sysdate) -7, 'sel') dari dual;

  1. Ada tiga fungsi dalam permintaan ini, dari bawah ke atas - SYSDATE, LAST_DAY, NEXT_DAY. Permintaan dijalankan sebagai berikut:
  2. Fungsi SYSDATE yang paling bersarang dieksekusi. Ini mengembalikan waktu sistem saat ini. Misalkan tanggal saat ini adalah 28 Oktober 2009
  3. Selanjutnya, hasil dari fungsi level kedua LAST_DAY dihitung. LAST_DATE ('28 -OCT-2009 ') mengembalikan hari terakhir Oktober 2009, yaitu 31 Oktober 2009.
  4. Kemudian tujuh hari dikurangi dari tanggal ini - ternyata 24 Oktober.
  5. Akhirnya, fungsi NEXT_DAY ('24 -OCT-2009 ',' tue ') dievaluasi, dan kueri mengembalikan Selasa terakhir di bulan Oktober - yaitu 27-OCT-2009 dalam contoh kita.

Cukup sulit untuk memahami dan membangun ekspresi kompleks menggunakan banyak panggilan fungsi bersarang, tetapi ini datang dengan waktu dan latihan. Anda dapat membagi ekspresi tersebut menjadi beberapa bagian dan mengujinya secara terpisah. Tabel DUAL sangat berguna untuk menguji kueri dan panggilan fungsi. Anda dapat menguji dan men-debug komponen kecil, yang kemudian dapat digabungkan menjadi satu ekspresi besar yang diinginkan.

Fungsi percabangan

Fungsi percabangan, juga dikenal sebagai IF-THEN-ELSE, digunakan untuk menentukan jalur eksekusi berdasarkan beberapa keadaan. Fungsi percabangan mengembalikan hasil yang berbeda berdasarkan hasil evaluasi suatu kondisi. Dalam kelompok fungsi tersebut, fungsi untuk bekerja dengan nilai NULL dibedakan: NVL, NVL2, NULLIF dan COALESCE. Dan juga fungsi umum yang diwakili oleh fungsi DECODE dan ekspresi CASE. Fungsi DECODE adalah fungsi Oracle, sedangkan ekspresi CASE hadir dalam standar ANSI SQL.

fungsi NVL

Fungsi NVL menguji nilai kolom atau ekspresi tipe data apa pun untuk NULL. Jika nilainya NULL, ia mengembalikan nilai default non-NULL alternatif, jika tidak, nilai asli akan dikembalikan.

Fungsi NVL memiliki dua parameter yang diperlukan dan sintaksnya adalah NVL (original, ifnull) di mana original adalah nilai asli yang akan diperiksa dan ifnull adalah hasil yang dikembalikan oleh fungsi jika original adalah NULL. Tipe data ifnull dan parameter asli harus kompatibel. Artinya, tipe data harus sama atau harus memungkinkan untuk secara implisit mengonversi nilai dari satu tipe ke tipe lainnya. Fungsi NVL mengembalikan nilai tipe data yang sama dengan tipe data parameter asli. Pertimbangkan tiga permintaan

Kueri 1: pilih nvl (1234) dari ganda;

Kueri 2: pilih nvl (null, 1234) dari dual;

Kueri 3: pilih nvl (substr ('abc', 4), 'Tidak ada substring') dari dual;

Karena fungsi NVL memerlukan dua parameter, kueri 1 akan mengembalikan kesalahan ORA-00909: jumlah argumen yang tidak valid. Kueri 2 akan mengembalikan 1234 karena NULL dicentang dan NULL. Kueri tiga menggunakan fungsi SUBSTR bersarang yang mencoba mengekstrak karakter keempat dari string tiga karakter, mengembalikan NULL, dan fungsi NVL mengembalikan string 'Tidak ada sbusstring'.

Fungsi NVL sangat berguna saat bekerja dengan angka. Ini digunakan untuk mengubah nilai NULL menjadi 0 sehingga operasi aritmatika lebih dari angka tidak mengembalikan NULL

fungsi NVL2

NVL2 menyediakan fungsionalitas lebih dari NVL, tetapi juga menangani nilai NULL. Ini menguji nilai kolom atau ekspresi jenis apa pun untuk NULL. Jika nilainya bukan NULL, maka parameter kedua dikembalikan, jika tidak, parameter ketiga dikembalikan, tidak seperti fungsi NVL, yang dalam hal ini mengembalikan nilai aslinya.

Fungsi NVL2 memiliki tiga parameter yang diperlukan dan sintaks NVL2 (original, ifnotnull, ifnull), di mana original adalah nilai yang akan diperiksa, ifnotnull adalah nilai yang dikembalikan jika original bukan NULL, dan ifnull adalah nilai yang dikembalikan jika original adalah NULL. Tipe data parameter ifnotnull dan ifnull harus kompatibel dan tidak boleh bertipe LONG. Tipe data yang dikembalikan oleh fungsi NVL2 sama dengan tipe data dari parameter ifnotnull. Mari kita lihat beberapa contoh

Kueri 1: pilih nvl2 (1234, 1, 'a string') dari dual;

Kueri 2: pilih nvl2 (null, 1234, 5678) dari dual;

Kueri 3: pilih nvl2 (substr ('abc', 2), 'Not bc', 'No substring') dari dual;

Parameter ifnotnull dalam kueri 1 adalah angka, dan parameter ifnull adalah string. Karena tipe data tidak kompatibel, kesalahan "ORA-01722: nomor tidak valid" dikembalikan. Permintaan dua mengembalikan parameter ifnull, karena yang asli adalah NULL dan hasilnya adalah 5678. Permintaan tiga menggunakan fungsi SUBSTR yang mengembalikan 'bc' dan memanggil NVL2 ('bc', 'Not bc', 'No substring') - yang mengembalikan parameter ifnotnull - 'Bukan bc'.

fungsi NULLIF

Fungsi NULLIF menguji dua nilai untuk identitas. Jika sama, NULL dikembalikan jika tidak, parameter pertama dikembalikan. Fungsi NULLIF memiliki dua parameter yang diperlukan dan sintaks NULLIF (jika tidak sama, perbandingan_item). Fungsi membandingkan dua parameter dan jika keduanya identik - NULL dikembalikan, jika tidak parameter ifunequal. Pertimbangkan permintaan

Kueri 1: pilih nullif (1234, 1234) dari ganda;

Kueri satu mengembalikan NULL karena parameternya identik. String dalam kueri 2 tidak dikonversi ke tanggal, tetapi dibandingkan sebagai string. Karena string memiliki panjang yang berbeda, ifunequal 24-JUL-2009 dikembalikan.

Pada Gambar 10-4, fungsi NULLIF bersarang di dalam fungsi NVL2. Fungsi NULLIF pada gilirannya menggunakan fungsi SUBSTR dan UPPER sebagai bagian dari ekspresi dalam parameter ifunequal. Kolom EMAIL dibandingkan dengan ekspresi ini, yang mengembalikan huruf pertama dari nama depan yang digabungkan dengan nama belakang untuk karyawan yang nama depannya terdiri dari 4 karakter. Ketika nilai-nilai ini sama, NULLIF akan mengembalikan NULL, dan nilai tersebut akan mengembalikan nilai parameter ifunequal. Nilai-nilai ini digunakan sebagai parameter untuk fungsi NVL2. NVL2, pada gilirannya, mengembalikan deskripsi apakah item yang dibandingkan cocok atau tidak.

Gambar 10-4 - Menggunakan fungsi NULLIF

Fungsi COALESCE

Fungsi COALESCE mengembalikan nilai non-NULL pertama dari daftar parameter. Jika semua parameter NULL, maka NULL dikembalikan. Fungsi COALESCE memiliki dua parameter yang diperlukan dan parameter opsional sebanyak yang Anda suka, dan sintaks COALESCE (expr1, expr2, ..., exprn) di mana hasilnya adalah expr1 jika expr tidak NULL, jika tidak expr2 dikembalikan jika tidak NULL, dan seterusnya. COALESCE sama dengan fungsi NVL bersarang

COALESCE (expr1, expr2) = NVL (expr1, expr2)

COALESCE (expr1, expr2, expr3) = NVL (expr1, NVL (expr2, expr3))

Tipe data nilai kembalian jika nilai non-NULL ditemukan sama dengan tipe data nilai non-NULL pertama. Untuk menghindari kesalahan 'ORA-00932: tipe data tidak konsisten', semua parameter non-NULL harus kompatibel dengan parameter non-NULL pertama. Mari kita lihat tiga contoh

Kueri 1: pilih penggabungan (null, null, null, 'a string') dari dual;

Kueri 2: pilih penggabungan (null, null, null) dari dual;

Kueri 3: pilih penggabungan (substr ('abc', 4), 'Not bc', 'No substring') dari dual;

Kueri 1 mengembalikan parameter keempat: string, karena ini adalah parameter non-NULL pertama. Kueri dua mengembalikan NULL karena semua parameter adalah NULL. Kueri 3 mengevaluasi parameter pertama, mendapatkan nilai NULL, dan mengembalikan parameter kedua, karena ini adalah parameter non-NULL pertama.

Parameter fungsi NVL2 dapat membingungkan jika Anda sudah terbiasa dengan fungsi NVL... NVL (asli, ifnull) mengembalikan asli jika nilainya bukan NULL, jika tidak ifnull. NVL2 (asli, ifnotnull, ifnull) mengembalikan ifnotnull jika original bukan NULL jika tidak ifnull. Kebingungan ini disebabkan oleh fakta bahwa parameter kedua dari fungsi NVL adalah ifnull, sedangkan di NVL2 adalah ifnotnull. Jadi jangan mengandalkan posisi parameter dalam fungsi.

fungsi DECODE

Fungsi DECODE mengimplementasikan logika if-then-else dengan memeriksa dua parameter pertama untuk kesetaraan dan mengembalikan nilai ketiga jika sama, atau nilai lain jika tidak sama. Fungsi DECODE memiliki tiga parameter yang diperlukan dan sintaks DECODE (expr1, comp1, iftrue1,,). Parameter ini digunakan seperti yang ditunjukkan pada contoh pseudocode berikut:

JIKA expr1 = comp1 lalu kembalikan iftrue1

Lain jika expr1 = comp2 lalu kembalikan iftrue2

Lain jika exprN = compN kemudian kembalikan iftrueN

Jika tidak, kembalikan NULL | iffalse;

Pertama, expr1 dibandingkan dengan comp1. Jika mereka sama, iftrue1 dikembalikan. Jika expr1 tidak sama dengan comp1, apa yang terjadi selanjutnya tergantung pada apakah parameter comp2 dan iftrue2 ditentukan. Jika diberikan, nilai expr1 dibandingkan dengan comp2. Jika nilainya sama, maka iftrue2 dikembalikan. Jika tidak, maka jika ada pasangan parameter compN, iftrueN, expr1 dan compN dibandingkan dan iftrueN dikembalikan jika sama. Jika tidak ada kecocokan yang ditemukan di salah satu set parameter, maka iffalse akan dikembalikan jika parameter ini ditentukan, atau NULL.

Semua parameter dalam fungsi DECODE dapat berupa ekspresi. Tipe pengembalian sama dengan tipe elemen validasi pertama - parameter comp 1. Ekspresi ekspresi 1 secara implisit dapat dikonversi ke tipe data dari parameter comp1. Semua parameter comp lain yang tersedia 1 ... compN juga secara implisit dapat dikonversi ke comp 1. DECODE memperlakukan nilai NULL sama dengan nilai NULL lainnya, mis. jika expr1 adalah NULL dan comp3 adalah NULL dan comp2 bukan NULL, maka iftrue3 dikembalikan. Mari kita lihat beberapa contoh

Kueri 1: pilih decode (1234, 123, '123 is a match') dari dual;

Query 2: pilih decode (1234, 123, '123 is a match', 'No match') dari dual;

Kueri 3: pilih decode ('search', 'comp1', 'true1', 'comp2', 'true2', 'search', 'true3', substr ('2search', 2, 6), 'true4', ' salah ') dari ganda;

Kueri satu membandingkan nilai 1234 dan 123. Karena keduanya tidak sama, iftrue1 diabaikan dan karena iffalse tidak ditentukan, NULL dikembalikan. Permintaan dua identik dengan permintaan 1 kecuali jika iffalse ditentukan. Karena 1234 tidak sama dengan 123 maka iffalse - 'Tidak ada kecocokan' dikembalikan. Permintaan tiga memeriksa nilai parameter untuk melihat apakah mereka cocok dengan nilai pencarian. Parameter comp1 dan comp2 bukan 'pencarian' sehingga hasil iftrue1 dan iftrue2 dilewati. Kecocokan ditemukan dalam perbandingan ketiga comp3 (posisi parameter 6) dan nilai pengembalian iftrue3 (parameter 7) adalah 'true3'. Karena kecocokan ditemukan, tidak ada perhitungan lebih lanjut yang dilakukan. Artinya, terlepas dari kenyataan bahwa nilai comp4 (parameter 8) juga cocok dengan expr1, ekspresi ini tidak pernah dihitung sejak kecocokan ditemukan dalam perbandingan sebelumnya.

ekspresi KASUS

Semua bahasa pemrograman generasi ketiga dan keempat mengimplementasikan konstruksi kasus. Seperti fungsi DECODE, ekspresi CASE memungkinkan Anda untuk mengimplementasikan logika if-then-else. Ada dua opsi untuk menggunakan ekspresi CASE. Ekspresi CASE sederhana menetapkan sumber untuk dibandingkan sekali, dan kemudian mencantumkan semua kondisi pengujian yang diperlukan. CASE yang dicari mengevaluasi kedua pernyataan untuk setiap kondisi.

Ekspresi CASE memiliki tiga parameter yang diperlukan. Sintaks ekspresi bergantung pada tipe. Untuk ekspresi CASE sederhana, terlihat seperti ini

Eksperimen_pencarian KASUS

KETIKA perbandingan_expr1 MAKA iftrue1

)

TRUNC mengembalikan angka n, dipotong menjadi m tempat desimal. Parameter m dapat dihilangkan - dalam hal ini, n dipotong menjadi bilangan bulat.

PILIH TRUNC (100.25678) X1, TRUNC (-100.25678) X2, TRUNC (100.99) X3,

TRUNC (100.25678, 2) X4

DARI DUAL

TANDA (n) fungsi

Fungsi SIGN menentukan tanda suatu bilangan. Jika n positif, fungsi mengembalikan 1. Jika n negatif, -1 dikembalikan. Jika sama dengan nol, maka 0 dikembalikan.Misalnya:

PILIH TANDA (100.22) X1, TANDA (-100.22) X2, TANDA (0) X3

DARI DUAL

Fitur menarik dari fungsi ini adalah kemampuan untuk melewatkan m sama dengan nol - dalam hal ini, tidak ada kesalahan pembagian dengan 0.

Fungsi POWER (n, m)

Fungsi POWER menaikkan n ke pangkat m. Derajat dapat berupa pecahan atau negatif, yang secara signifikan memperluas kemampuan fungsi ini.

PILIH DAYA (10, 2) X1, DAYA (100, 1/2) X2,

DAYA (1000, 1/3) X3, DAYA (1000, -1/3) X4

DARI DUAL

X1 X2 X3 X4
100 10 10 0,1

Dalam beberapa kasus, saat memanggil fungsi ini, pengecualian dapat terjadi. Sebagai contoh:

PILIH DAYA (-100, 1/2) X2

DARI DUAL

V kasus ini upaya dilakukan untuk menghitung akar kuadrat dari angka negatif, yang akan menghasilkan kesalahan "Argumen di luar jangkauan" ORA-01428.

fungsi SQRT (n)

Fungsi ini kembali Akar pangkat dua dari nomor n. Sebagai contoh:

PILIH KOTAK (100) X

DARI DUAL

Fungsi EXP (n) dan LN (n)

Fungsi EXP menaikkan e ke pangkat n, dan fungsi LN menghitung logaritma natural dari n (di mana n harus lebih besar dari nol). Contoh:

PILIH EXP (2) X1, LN (1) X2, LN (EXP (2)) X3

Fungsi TO_CHAR dengan angka

Fungsi untuk mengkonversi data ke tipe data lain. TO_CHAR (angka) mengonversi angka menjadi teks. TO_NUMBER (string) mengonversi teks menjadi angka.

SELECT TO_CHAR (123) FROM DUAL akan mengembalikan 12345, SELECT TO_NUMBER (`12345") FROM DUAL akan mengembalikan 12345.

Pekerjaan laboratorium. Mengubah format angka yang ditampilkan

Perubahan format nilai numerik di Oracle SQL, fungsi TO_CHAR untuk bekerja dengan nilai numerik.

Latihan:

Tulis kueri yang menampilkan informasi nama depan, nama belakang, dan gaji karyawan dari tabel hr.employees dalam format yang ditunjukkan pada Gambar 1. 3.4-1:

Beras. 3.4 -1

Dalam hal ini, data harus diurutkan sedemikian rupa sehingga baris pertama ditampilkan untuk karyawan dengan gaji tertinggi.

Catatan:

Beberapa nilai gaji pada Gambar. 3.4-1 telah berubah, jadi mungkin tidak cocok dengan nilai Anda.

Larutan:

SELECT first_name AS "First name", last_name Sebagai "Last name", TO_CHAR (SALARY, "L999999999,99") Sebagai "Gaji" DARI hr.employees ORDER BY GAJI DESC.

Fungsi TO_NUMBER dan TO_DATE

Fungsi untuk mengonversi string menjadi tanggal TO_DATE (string, format). Kemungkinan nilai format sudah dibahas di atas, jadi saya akan memberikan beberapa contoh penggunaan fungsi ini. Contoh:

PILIH TO_DATE ("01.01.2010", `DD.MM.YYYY") DARI DUAL akan mengembalikan tanggal `01.01.2010";

PILIH TO_DATE ("01.JAN.2010", `DD.MON.YYYY") DARI DUAL akan mengembalikan tanggal `01.01.2009";

PILIH TO_DATE ("15-01-10", `DD-MM-YY") DARI DUAL akan mengembalikan tanggal `15/01/2010".

Fungsi untuk mengubah string menjadi nilai numerik TO_NUMBER (string, format). Nilai format yang paling umum tercantum dalam tabel, jadi mari kita lihat penggunaan fungsi ini dengan contoh. Contoh:

PILIH TO_NUMBER (`100") DARI DUAL akan mengembalikan nomor 100 SELECT TO_NUMBER (`0010.01", "9999D99") DARI DUAL akan mengembalikan 10,01;

PILIH TO_NUMBER ("500.000", "999G999") DARI DUAL akan mengembalikan 500000.

Elemen RR dalam format tanggal

Elemen format tanggal dan waktu RR mirip dengan elemen format tanggal dan waktu YY, tetapi memberikan fleksibilitas tambahan untuk menyimpan nilai tanggal di abad lain. Elemen format tanggal waktu RR memungkinkan Anda untuk menyimpan tanggal dari abad ke-20 hingga abad ke-21 dengan hanya menentukan dua digit terakhir tahun tersebut.

Jika dua digit terakhir dari tahun berjalan adalah 00 sampai 49, maka tahun yang dikembalikan memiliki dua digit pertama yang sama dengan tahun berjalan.

Jika dua digit terakhir tahun berjalan adalah antara 50 dan 99, maka 2 digit pertama dari tahun yang dikembalikan adalah 1 lebih besar dari 2 digit pertama tahun berjalan.

Jika dua digit terakhir dari tahun berjalan adalah 00 sampai 49, maka 2 digit pertama dari tahun yang dikembalikan adalah 1 kurang dari 2 digit pertama tahun berjalan.

Jika dua digit terakhir tahun berjalan antara 50 dan 99, maka tahun yang dikembalikan memiliki dua digit pertama yang sama dengan tahun berjalan.

fungsi NVL

Fungsi NVL biasanya yang paling umum digunakan. Fungsi ini mengambil dua parameter: NVL (expr1, exp2). Jika parameter pertama dari expr1 bukan NULL, maka fungsi mengembalikan nilainya. Jika parameter pertama adalah NULL, maka fungsi mengembalikan nilai parameter kedua exp2 sebagai gantinya.

Contoh: Pilih NVL (supplier_city, n / a ") dari pemasok:

Pernyataan SQL di atas akan mengembalikan n / "jika supplier_city adalah null, jika tidak maka akan mengembalikan supplier_city.

Contoh lain penggunaan fungsi NVL di Oracle/PLSQL adalah:

pilih supplier_id, NVL (supplier_desc, supplier_name) dari pemasok.

Pernyataan SQL ini akan kembali nama pemasok lapangan jika pemasok_desc berisi nilai nol. Kalau tidak, itu akan kembali pemasok_desc.

Contoh terakhir: menggunakan fungsi NVL di Oracle / PLSQL adalah: pilih NVL (komisi, 0) dari penjualan;

Pernyataan SQL ini mengembalikan 0 jika Komisi bidang berisi nilai nol. Kalau tidak, itu akan kembali Komisi bidang.

Konversi NVL untuk tipe data yang berbeda

Fungsi NVL digunakan untuk mengonversi nilai yang tidak ditentukan menjadi nilai aktual: NVL ( ekspresi1, ekspresi 2), di mana:

ekspresi1- Nilai asli atau yang dihitung, yang mungkin tidak ditentukan.

ekspresi2- Nilai yang menggantikan nilai yang tidak ditentukan.

Catatan: Fungsi NVL dapat digunakan untuk mengonversi tipe data apa pun, tetapi hasilnya akan selalu menjadi tipe yang sama seperti ekspresi1.

Mengonversi NVL untuk berbagai jenis:

NOMOR - NVL (kolom angka, 9).

CHAR atau VARCHAR2 - NVL (simbol | kolom,"Tidak tersedia").

Pekerjaan laboratorium. Menerapkan fungsi NVL

Fungsi NVL untuk bekerja dengan nilai null di Oracle SQL.

Latihan:

Tulis kueri yang menampilkan informasi tentang nama depan dan belakang karyawan dari tabel hr.employees, serta tingkat komisi (kolom COMMISSION_PCT) untuk karyawan tersebut. Dalam hal ini, untuk karyawan yang komisinya tidak ditentukan, Anda perlu menampilkan nilai 0. Hasil kueri harus sama seperti yang ditunjukkan pada Gambar. 3.5-1.

Beras. 3.5 -1 (menampilkan nilai mulai dari baris 51)

Larutan:

Kode permintaan yang sesuai dapat seperti ini:

SELECT first_name AS “First name”, last_name Sebagai “Last name”, NVL (COMMISSION_PCT, 0) Sebagai “Commission rate” DARI hr.employees.

fungsi NVL

Fungsi NVL biasanya yang paling umum digunakan. Fungsi ini mengambil dua parameter: NVL (expr1, expr2). Jika parameter pertama dari expr1 bukan NULL, maka fungsi mengembalikan nilainya. Jika parameter pertama adalah NULL, maka fungsi mengembalikan nilai parameter kedua expr2 sebagai gantinya.

Mempertimbangkan contoh praktis... Bidang COMM dalam tabel EMP dapat berisi nilai NULL. Saat menjalankan kueri seperti:

PILIH EMPNO, ENAME, COMM, NVL (COMM, 0) NVL_COMM

DARI SCOTT.EMP

nilai NULL akan diganti dengan nol. Perhatikan bahwa jika Anda menghasilkan nilai menggunakan fungsi, itu diberi alias. Hasil kueri akan terlihat seperti ini:

EMPNO ENAME KOMUNIKASI NVL_COMM
7369 SMITH 0
7499 ALLEN 300 300
7521 BANGSAL 500 500
7566 JONES 0
7654 MARTIN 1400 1400
7698 BLAKE 0
7782 CLARK 0
7839 RAJA 0
7844 TUKANG BUBUT 0 0
7900 JAMES 0
7902 MENGARUNGI 0
7934 TUKANG GILING 0

CEIL (n) fungsi

Fungsi CEIL mengembalikan bilangan bulat terkecil yang lebih besar dari atau sama dengan angka n yang dilewatkan sebagai parameter. Sebagai contoh:

PILIH CEIL (100) X1, CEIL (-100) X2, CEIL (100.2) X3, CEIL (-100.2) X4

DARI DUAL

Fungsi TRUNC (n [, m])

TRUNC mengembalikan angka n, dipotong menjadi m tempat desimal. Parameter m dapat dihilangkan - dalam hal ini, n dipotong menjadi bilangan bulat.

PILIH TRUNC (100.25678) X1, TRUNC (-100.25678) X2, TRUNC (100.99) X3,

TRUNC (100.25678, 2) X4

DARI DUAL

TANDA (n) fungsi

Fungsi SIGN menentukan tanda suatu bilangan. Jika n positif, fungsi mengembalikan 1. Jika n negatif, -1 dikembalikan. Jika sama dengan nol, maka 0 dikembalikan.Misalnya:

PILIH TANDA (100.22) X1, TANDA (-100.22) X2, TANDA (0) X3

DARI DUAL

Fitur menarik dari fungsi ini adalah kemampuan untuk melewatkan m sama dengan nol - dalam hal ini, tidak ada kesalahan pembagian dengan 0.

Fungsi POWER (n, m)

Fungsi POWER menaikkan n ke pangkat m. Derajat dapat berupa pecahan atau negatif, yang secara signifikan memperluas kemampuan fungsi ini.

PILIH DAYA (10, 2) X1, DAYA (100, 1/2) X2,

DAYA (1000, 1/3) X3, DAYA (1000, -1/3) X4

DARI DUAL

X1 X2 X3 X4
100 10 10 0,1

Dalam beberapa kasus, saat memanggil fungsi ini, pengecualian dapat terjadi. Sebagai contoh:

PILIH DAYA (-100, 1/2) X2

DARI DUAL

Dalam hal ini, upaya dilakukan untuk menghitung akar kuadrat dari angka negatif, yang akan menghasilkan kesalahan "Argumen di luar jangkauan" ORA-01428.

fungsi SQRT (n)

Fungsi ini mengembalikan akar kuadrat dari n. Sebagai contoh:

PILIH KOTAK (100) X

DARI DUAL

Fungsi EXP (n) dan LN (n)

Fungsi EXP menaikkan e ke pangkat n, dan fungsi LN menghitung logaritma natural dari n (di mana n harus lebih besar dari nol). Contoh:

PILIH EXP (2) X1, LN (1) X2, LN (EXP (2)) X3