Operator cabang dalam perintah Pilih. Konversi NVL untuk berbagai jenis data pekerjaan laboratorium

Fungsi to_char dengan angka

Fungsi konversi data ke tipe data lainnya. To_char (nomor) mengubah angka menjadi teks. To_number mengkonversi teks ke nomor.

Pilih TO_CHAR (123) dari Dual akan mengembalikan baris 123, pilih TO_Number (`12345") dari ganda akan mengembalikan angka 12345.

Pekerjaan laboratorium. Mengubah format nomor output

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

Tugas:

Tulis permintaan yang akan menampilkan informasi tentang nama, nama keluarga dan gaji karyawan dari tabel HR.Employeonte dalam format yang ditunjukkan pada Gambar. 3.4-1:

Ara. 3.4. -1

Pada saat yang sama, data harus diurutkan sedemikian rupa sehingga baris bagi karyawan dengan gaji terbesar pertama kali ditampilkan.

catatan:

Beberapa upah pada Gambar. 3.4-1 diubah, sehingga mereka mungkin tidak bertepatan dengan nilai-nilai Anda.

Keputusan:

Pilih First_Name sebagai "nama", last_name sebagai "nama keluarga", to_char (gaji, "l999999999.99") sebagai "salad" dari jam gaji.

Fungsi to_number dan to_date

Fungsi konversi baris pada tanggal T_Date (string, format). Kemungkinan format sudah dipertimbangkan di atas, jadi saya akan memberikan beberapa contoh menggunakan 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.yyy) Dari. Dual akan mengembalikan tanggal `01.01.2009";

PILIH To_date ("15-01-10", `dd-mm-yy") Dari. Dual akan mengembalikan tanggal `01/15/2010."

Fungsi konversi baris ke nilai numerik to_number (string, format). Format yang paling umum tercantum dalam tabel, jadi pertimbangkan penggunaan fungsi ini pada contoh. Contoh:

PILIH To_number (`100") Dari. Dual akan mengembalikan angka 100 pilih to_number (`0010.01," 9999D99) Dari. Dual akan mengembalikan angka 10.01;

PILIH To_number ("500.000", "999G999") Dari. Dual akan mengembalikan angka 500000.

Elemen RR dalam format tanggal

Elemen format RR tanggal dan waktu mirip dengan elemen format tanggal dan waktu YY, tetapi memberikan fleksibilitas tambahan untuk menyimpan nilai-nilai tanggal dan dalam abad-abad lainnya. Elemen tanggal RR dan format waktu memungkinkan Anda untuk menyimpan tanggal abad ke-20 di abad ke-21, menunjukkan hanya dua digit terakhir tahun ini.

Jika dua tokoh terakhir terakhir tahun berjalan adalah 00 hingga 49, tahun kembali memiliki dua digit pertama yang sama seperti pada tahun berjalan.

Jika dua tokoh terakhir tahun berjalan dari 50 hingga 99, 2 digit pertama tahun yang dikembalikan adalah 1 lebih dari dalam 2 digit pertama tahun berjalan.

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

Jika dua tokoh terakhir tahun berjalan dari 50 hingga 99, maka tahun yang dikembalikan memiliki dua digit pertama yang sama seperti pada tahun berjalan.

Fitur NVL.

Fungsi NVL biasanya paling sering diterapkan. Fungsi tersebut menerima dua parameter: NVL (expr1, exerg2). Jika parameter expr1 pertama tidak sama dengan NULL, maka fungsi mengembalikan nilainya. Jika parameter nol pertama, maka fungsi mengembalikan nilai parameter kedua exerg2.

Contoh: Pilih NVL (Supplier_City, N / A ") dari pemasok:

Pernyataan SQL akan kembali n / "Jika bidang pemasok_city berisi nilai nol. Jika tidak, itu akan mengembalikan nilai pemasok_City.

Contoh lain dari menggunakan fungsi NVL di Oracle / PLSQL adalah:

pilih Supplier_ID, NVL (suplier_desc, supplier_name) dari pemasok.

Aplikasi SQL ini akan kembali nama pemasok. Bidang, jika supplier_desc. mengandung nilai nol. Kalau tidak, dia akan kembali supplier_desc..

Contoh terakhir: Menggunakan fungsi NVL di Oracle / PLSQL adalah: Pilih NVL (Komisi, 0) dari penjualan;

Pernyataan SQL ini kembali ke 0 jika komisi Bidang berisi nilai nol. Kalau tidak, akan mungkin untuk kembali komisi bidang.

Konversi NVL untuk tipe data yang berbeda

Untuk mengonversi nilai yang tidak terbatas pada fungsi aktual, fungsi NVL digunakan: Nvl ( ekspresi1, ekspresi 2), dimana:

ekspresi1- Nilai sumber atau dihitung yang dapat tidak pasti.

ekspresi2. - Nilai yang diganti bukannya nilai yang tidak terbatas.

catatan: Fungsi NVL dapat digunakan untuk mengkonversi semua jenis data, tetapi hasilnya akan selalu menjadi tipe yang sama dengan ekspresi1.

Konversi NVL untuk berbagai jenis:

Nomor - NVL. (kolom numerik, 9).

Char atau varchar2 - NVL (Simbol | kolom, "Tidak tersedia").

Pekerjaan laboratorium. Penerapan fungsi NVL

Fitur NVL untuk bekerja dengan nilai-nilai yang tidak pasti di Oracle SQL.

Tugas:

Tuliskan permintaan yang menampilkan informasi tentang nama dan nama keluarga staf dari Tabel HR.Employes., Serta tawaran Komisi (Komisi Kolom_pct) untuk karyawan. Pada saat yang sama, bagi karyawan untuk siapa Komisi tidak didefinisikan, perlu untuk menampilkan nilai 0. Hasil kueri harus disajikan pada Gambar. 3,5-1.

Ara. 3.5. -1 (Nilai mulai dari baris 51)

Keputusan:

Kode permintaan yang sesuai mungkin:

Pilih First_Name sebagai "Nama", Last_Name sebagai "Nama keluarga", NVL (Komisi_PCT, 0) sebagai "tingkat komisi" dari HR.Employees.

Fitur NVL.

Fungsi NVL biasanya paling sering diterapkan. Fungsi tersebut menerima dua parameter: NVL (expr1, expr2). Jika parameter expr1 pertama tidak sama dengan NULL, maka fungsi mengembalikan nilainya. Jika parameter nol pertama, maka fungsi mengembalikan nilai parameter expr2 kedua.

Mempertimbangkan contoh praktis. Bidang COMM dalam tabel EMP dapat berisi nilai nol. Saat melakukan permintaan formulir:

Pilih Empno, Ename, COMM, NVL (COMM, 0) NVL_COMM

Dari Scott.emp.

nilai nol akan diganti dengan nol. Harap dicatat bahwa dalam hal pembentukan nilai dengan bantuan fungsi, ditugaskan untuk nama samaran. Hasil permintaan akan:

Empno. Memusnahkan. COMM. Nvl_comm.
7369 Smith. 0
7499 Allen. 300 300
7521 Menangkal 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 CEIL mengembalikan integer terkecil, lebih besar atau sama dengan jumlah N. Sebagai contoh:

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

Dari dual.

Fungsi trunc (n [, m])

Fungsi Trunc mengembalikan angka dan terpotong ke tanda-tanda setelah titik desimal. Parameter M mungkin tidak diindikasikan - dalam hal ini, n dipotong ke keseluruhan.

Pilih Trunc (100.25678) x1, trunc (-100.25678) x2, trunc (100.99) x3,

Trunc (100.25678, 2) x4

Dari dual.

Fungsi tanda (n)

Fungsi tanda menentukan jumlah angka. Jika n positif, maka fungsi kembali 1. Jika negatif dikembalikan -1. Jika nol adalah nol, maka 0 dikembalikan. Misalnya:

Pilih tanda (100.22) x1, tanda (-100.22) x2, tanda (0) x3

Dari dual.

Fitur menarik dari fitur ini adalah kemungkinan mentransmisikan m sama dengan nol - itu tidak muncul kesalahan divisi dengan 0.

Fungsi daya (n, m)

Fungsi daya membangun angka n ke derajat m. Tingkat mungkin fraksional dan 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, ketika memanggil fitur ini, pengecualian dapat terjadi. Sebagai contoh:

Pilih Daya (-100, 1/2) x2

Dari dual.

DI kasus ini Upaya dilakukan untuk menghitung akar kuadrat dari angka negatif, yang akan menghasilkan kesalahan ORA-01428 "argumen di luar kisaran".

Fungsi sqrt (n)

Fitur ini kembali akar pangkat dua dari nomor n. Sebagai contoh:

Pilih SQRT (100) x

Dari dual.

Fungsi exp (n) dan ln (n)

Fungsi exp memindahkan E ke derajat N, dan fungsi LN menghitung logaritma alami dari N (dengan N, n harus lebih besar dari nol). Contoh:

Pilih EXP (2) x1, ln (1) x2, ln (exp (2)) x3

Fitur NVL.

Fungsi NVL biasanya paling sering diterapkan. Fungsi tersebut menerima dua parameter: NVL (expr1, expr2). Jika parameter expr1 pertama tidak sama dengan NULL, maka fungsi mengembalikan nilainya. Jika parameter nol pertama, maka fungsi mengembalikan nilai parameter expr2 kedua.

Pertimbangkan contoh praktis. Bidang COMM dalam tabel EMP dapat berisi nilai nol. Saat melakukan permintaan formulir:

Pilih Empno, Ename, COMM, NVL (COMM, 0) NVL_COMM

Dari Scott.emp.

nilai nol akan diganti dengan nol. Harap dicatat bahwa dalam hal pembentukan nilai dengan bantuan fungsi, ditugaskan untuk nama samaran. Hasil permintaan akan:

Empno. Memusnahkan. COMM. Nvl_comm.
7369 Smith. 0
7499 Allen. 300 300
7521 Menangkal 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 CEIL mengembalikan integer terkecil, lebih besar atau sama dengan jumlah N. Sebagai contoh:

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

Dari dual.

Fungsi trunc (n [, m])

Fungsi Trunc mengembalikan angka dan terpotong ke tanda-tanda setelah titik desimal. Parameter M mungkin tidak diindikasikan - dalam hal ini, n dipotong ke keseluruhan.

Pilih Trunc (100.25678) x1, trunc (-100.25678) x2, trunc (100.99) x3,

Trunc (100.25678, 2) x4

Dari dual.

Fungsi tanda (n)

Fungsi tanda menentukan jumlah angka. Jika n positif, maka fungsi kembali 1. Jika negatif dikembalikan -1. Jika nol adalah nol, maka 0 dikembalikan. Misalnya:

Pilih tanda (100.22) x1, tanda (-100.22) x2, tanda (0) x3

Dari dual.

Fitur menarik dari fitur ini adalah kemungkinan mentransmisikan m sama dengan nol - itu tidak muncul kesalahan divisi dengan 0.

Fungsi daya (n, m)

Fungsi daya membangun angka n ke derajat m. Tingkat mungkin fraksional dan 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, ketika memanggil fitur 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 mengarah pada kesalahan ORA-01428 "di luar kisaran" terjadi.

Fungsi sqrt (n)

Fungsi ini mengembalikan akar kuadrat dari N angka. Sebagai contoh:

Pilih SQRT (100) x

Dari dual.

Fungsi exp (n) dan ln (n)

Fungsi exp memindahkan E ke derajat N, dan fungsi LN menghitung logaritma alami dari N (dengan N, n harus lebih besar dari nol). Contoh:

Pilih EXP (2) x1, ln (1) x2, ln (exp (2)) x3

Fungsi yang diinvestasikan kami menyentuh sedikit lebih awal, sekarang pertimbangkan mereka sedikit lebih detail. Kami juga akan mempertimbangkan fungsi bekerja dengan nilai nol dan fungsi yang membantu mengimplementasikan operasi cabang dalam permintaan.

Fungsi bersarang

Fungsi bersarang Saya menggunakan nilai yang dikembalikan dari satu fungsi sebagai parameter input untuk fungsi lain. Fungsi selalu mengembalikan hanya satu nilai. Oleh karena itu, Anda dapat mempertimbangkan hasil dari fungsi fungsi sebagai nilai literal ketika Anda menggunakannya sebagai parameter panggilan ke fungsi lain. Fungsi baris dapat dilampirkan ke setiap tingkat sarang. Panggil satu fungsi terlihat seperti

Fungsi1 (parameter1, parameter2, ...) \u003d hasil

Mengganti parameter fungsi untuk memanggil fungsi lain dapat menyebabkan penampilan spesies

F1 (param1.1, f2 (param2.1, param2.2, f3 (param3.1)), param1.3)

Pada awalnya, fungsi bersarang dihitung sebelum hasilnya digunakan sebagai nilai input untuk fungsi lain. Fungsi dihitung dari tingkat terdalam sarang ke kanan kiri atas. Ekspresi sebelumnya dilakukan sebagai berikut

  1. Gambar F3 (param1) dihitung dan nilai pengembalian digunakan sebagai parameter ketiga untuk Fungsi 2, sebut saja Param2.3
  2. Fungsi F2 kemudian dihitung (param1, param2.2, param2.3) dan nilai kembali digunakan sebagai fungsi parameter kedua F1 - param1.2.
  3. Akhirnya, fungsi F1 (Param1, Param2, Param1.3) dihitung dan hasilnya dikembalikan ke program panggilan.

Dengan demikian, fungsi F3 berada di tingkat bersarang ketiga.

Pertimbangkan permintaannya

select_Day (Last_Day (sysdate) -7, 'Sel') dari dual;

  1. Dalam kueri ini, tiga fungsi, dari level bawah ke atas - sysdate, last_day, next_day. Permintaan dilakukan sebagai berikut.
  2. Fungsi sysdate yang paling bersarang dilakukan. Ini mengembalikan waktu sistem saat ini. Misalkan tanggal saat ini 28 Oktober 2009
  3. Hasilnya adalah hasil dari fungsi last_day tingkat kedua. Last_date ('28 -Oxt-2009 ') mengembalikan hari terakhir Oktober 2009, yaitu, nilai 31 Oktober 2009.
  4. Kemudian pengurangan terjadi sejak tanggal tujuh hari ini - ternyata pada 24 Oktober.
  5. Dan akhirnya, fungsi next_day ('24 -Oxt-2009 ',' tue ') dihitung, dan permintaan kembali Selasa terakhir Oktober - yang dalam contoh kami 27-Okt 2009.

Cukup sulit untuk memahami dan membangun ekspresi kompleks menggunakan banyak tantangan fungsi yang terpasang, tetapi ia datang dengan waktu dan praktik. Anda dapat mematahkan ekspresi seperti itu pada bagian dan menguji secara terpisah. Tabel dual sangat berguna untuk menguji z.aprosov dan hasil fungsi fungsi. Anda dapat menguji dan men-debug komponen kecil, yang kemudian bergabung menjadi satu ekspresi yang diinginkan besar.

Fungsi cabang

Fungsi cabang, juga dikenal seolah-olah sesuatu - jika tidak, digunakan untuk menentukan jalur implementasi tergantung pada keadaan apa pun. Fungsi percabangan mengembalikan hasil yang berbeda berdasarkan pada tidak ada hasil dari penghitungan kondisi. Kelompok fungsi tersebut mengalokasikan fungsi bekerja dengan nilai NULL: NVL, NVL2, Nullif dan Coalesce. Dan juga fitur umum yang diwakili oleh fungsi decode dan ekspresi kasus. Fungsi decode adalah fungsi Oracle, sedangkan ekspresi kasus hadir dalam standar ANSI SQL.

Fitur NVL.

Fungsi NVL memeriksa nilai kolom atau mengekspresikan tipe data apa pun ke NULL. Jika null - itu mengembalikan nilai default non-nol alternatif, jika nilai awal dikembalikan.

Fungsi NVL memiliki dua parameter yang diperlukan dan sintaks NVL (asli, IFNULL) di mana aslinya adalah nilai asli untuk memeriksa dan hasil IFNull yang dikembalikan oleh fungsi jika nilai asli adalah NULL. Jenis data dari parameter IFNull dan asli harus kompatibel. Artinya, baik tipe data harus sama atau harus menjadi kemungkinan konversi nilai-nilai implisit dari satu jenis ke tipe lainnya. Fungsi NVL mengembalikan nilai tipe data yang sama dengan tipe data dari parameter asli. Pertimbangkan tiga permintaan

Kueri 1: Pilih NVL (1234) dari Dual;

Kueri 2: Pilih NVL (NULL, 1234) dari Dual;

Query 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. Permintaan 2 akan kembali 1234 karena nilai nol diperiksa dan null. Pertanyaan tiga digunakan fungsi substr bersarang yang mencoba memilih karakter keempat dari string dalam tiga karakter, mengembalikan nilai nol, dan fungsi NVL mengembalikan string 'tidak ada sbusting'.

Fungsi NVL sangat berguna saat bekerja dengan angka. Ini digunakan untuk mengubah nilai nol menjadi 0 hingga operasi aritmatika Nulls tidak mengembalikan angka

Fitur NVL.2

Fungsi NVL2 memberikan lebih fungsional daripada NVL, tetapi juga berfungsi untuk memproses nilai nol. Ini memeriksa nilai kolom atau ekspresi jenis apa pun untuk nol. Jika nilainya tidak sama dengan NULL, parameter kedua terlibat, jika tidak parameter ketiga dikembalikan, tidak seperti fungsi NVL, yang dalam hal ini mengembalikan nilai awal.

Fungsi NVL2 memiliki tiga parameter yang diperlukan dan sintaks NVL2 (asli, iFnotNull, IFNULL), di mana aslinya adalah nilai yang valid, nilai ifnotnull dikembalikan jika aslinya bukan null dan ifnull dikembalikan jika null. Jenis data parameter ifnotnull dan ifnull harus kompatibel, dan mereka tidak bisa beretik. Jenis data fungsi yang dikembalikan NVL2 sama dengan jenis data parameter ifnotnull. Pertimbangkan beberapa contoh

Kueri 1: Pilih NVL2 (1234, 1, 'string') dari dual;

Kueri 2: Pilih NVL2 (NULL, 1234, 5678) dari Dual;

Query 3: Pilih NVL2 (Substr ('ABC', 2), 'bukan BC', 'tidak ada substring') dari dual;

Parameter ifnotnull pada kueri 1 adalah nomornya, dan parameter IFNull adalah string. Karena tipe data tidak kompatibel, kesalahan "ORA-01722: Nomor tidak valid" dikembalikan. Antrian dua mengembalikan parameter IFNull, karena asli adalah nol dan hasilnya akan 5678. Kueri tiga menggunakan fungsi substr yang mengembalikan 'bc' dan hubungi nvl2 ('bc', 'bukan substring') - yang mengembalikan parameter ifnotnull - 'bukan bc'.

Fungsi nullif.

Fungsi nullif memeriksa dua nilai untuk identitas. Jika mereka sama - NULL dikembalikan jika parameter pertama dikembalikan. Fungsi nullif memiliki dua parameter wajib dan sintaks nullif (ifunequal, perbandingan_item). Fungsi ini membandingkan dua parameter dan jika identik - null dikembalikan, jika tidak parameter ifunequal. Pertimbangkan permintaan

Kueri 1: Pilih Nullif (1234, 1234) dari Dual;

Permintaan satu mengembalikan NULL karena parameternya identik. Baris dalam kueri 2 tidak dikonversi ke tanggal, tetapi dibandingkan dengan garis. Karena baris panjang yang berbeda - mengembalikan parameter IfuneQual 24-Jul-2009.

Gambar 10-4, fungsi nullif diinvestasikan dalam fungsi NVL2. Dalam fungsi nullif, pada gilirannya, substr dan fungsi atas digunakan sebagai bagian dari ekspresi dalam parameter ifunequal. Kolom email dibandingkan dengan ungkapan ini yang mengembalikan huruf pertama dari nama, bersatu dengan nama keluarga untuk karyawan yang memiliki nama dalam 4 karakter. Ketika nilai-nilai ini sama, Nullif akan mengembalikan NULL, nilai parameter ifunequal akan mengembalikan nilai. Nilai-nilai ini digunakan sebagai parameter untuk fungsi NVL2. NVL2 pada gilirannya, mengembalikan deskripsi apakah elemen yang dapat diambil bertepatan atau tidak.

Gambar 10-4 - menggunakan fungsi nullif

Fungsi coalingce.

Fungsi Coalesce mengembalikan nilai pertama yang tidak sama dengan NULL dari daftar parameter. Jika semua parameter adalah NULL, NULL dikembalikan. Fungsi Coalesce memiliki dua parameter yang diperlukan dan berapa banyak parameter opsional dan sintakso coalesce (expr1, expr2, ..., exprn) di mana hasilnya adalah expr1 jika nilai EXPR 1H nol, jika tidak hasilnya adalah EXPR2 jika tidak null , dll. Coalesce sama-sama dalam arti fungsi NVL

Coalesce (ExPr1, ExPr2) \u003d NVL (ExPr1, ExPr2)

Coalesce (expr1, expr2, expr3) \u003d nvl (expr1, nvl (expr2, expr3))

Nilai Pengembalian Tipe Data Jika NULL NULL Nilai sama dengan tipe data dari nilai pertama bukan nol. Untuk menghindari kesalahan 'ORA-00932: tipe data yang tidak konsisten', semua parameter non-nol harus kompatibel dengan parameter nol pertama. Pertimbangkan tiga contoh

Kueri 1: Pilih Coalesce (NULL, NULL, NULL, 'A String') dari Dual;

Kueri 2: Pilih Coalesce (NULL, NULL, NULL) dari Dual;

Query 3: Pilih Coalesce (Substr ('ABC', 4), 'bukan bc', 'tidak ada substring') dari dual;

Permintaan 1 Mengembalikan parameter keempat: String, karena ini adalah parameter nol pertama. Kueri dua mengembalikan nol karena semua parameter adalah nol. Permintaan 3 menghitung parameter pertama, mendapatkan nilai nol dan mengembalikan parameter kedua, karena ini adalah parameter nol pertama.

Parameter fungsi NVL2 mungkin bingung jika Anda sudah terbiasa dengan fungsi NVL. NVL (asli, ifnull) Mengembalikan Asli jika nilainya tidak nol, jika tidak, ifnull. NVL2 (asli, ifnot, ifnull) Mengembalikan ifnotnull jika nilai asli tidak sama dengan null selain IFNULL. Kebingungan terjadi karena fakta bahwa parameter kedua fungsi NVL IFNULL, sedangkan NVL2 adalah ifnotnull. Jadi jangan berharap untuk memposisikan parameter dalam fungsi.

Fitur Decode.

Fungsi decode mengimplementasikan logika jika-lalu. Memeriksa dua parameter pertama per kesetaraan dan mengembalikan nilai ketiga jika terjadi kesetaraan atau nilai lain dalam kasus ketidaksetaraan. Fungsi decode memiliki tiga parameter yang diperlukan dan decode sintaks (EXPR1, COMP1, IFTRUE1,). Parameter ini digunakan seperti yang ditunjukkan dalam contoh kode pseudo berikut.

Jika expr1 \u003d comp1 kemudian kembali secara iftrue1

Lain jika expr1 \u003d comp2 kemudian kembali secara iftrue2

Lain jika exprn \u003d compn kemudian kembalikan iftruen

Lain kembali null | iffalse;

Pada awalnya, EXPR1 dibandingkan dengan Comp1. Jika mereka sama dengan nilai iftrue1. Jika EXPR1 tidak sama dengan COMP1, maka apa yang terjadi lebih lanjut tergantung pada apakah parameter Comp2 dan iftrue2 ditentukan. Jika set diatur, nilai EXPR1 dibandingkan dengan Comp2. Jika nilai sama, iftrue2 dikembalikan. Jika tidak, jika ada pasangan parameter Compn, iftruen membandingkan EXPr1 dan Compn dan jika iFtruen dikembalikan jika terjadi kesetaraan. Jika tidak ada kebetulan dalam satu set parameter, maka dikembalikan jika jika parameter ini ditetapkan, atau null.

Semua parameter dalam fungsi decode dapat berupa ekspresi. Jenis nilai yang dikembalikan sama dengan jenis elemen pemeriksaan pertama - parametercOMP 1. Ekspresi EXPR 1 secara implisit dikonversi ke jenis data parameter comp1. Semua opsi comp lainnya yang tersedia1 ... Compn. Juga secara implisit dikonversi ke tipe comp1. Decode mempertimbangkan nilai nol sama dengan nilai nol lain, I.E. Jika EXPR1 adalah NULL dan COMP3 adalah NULL, dan COMP2 bukan nol, maka nilai iftrue3 dikembalikan. Pertimbangkan beberapa contoh

Query 1: Pilih Decode (1234, 123, '123 adalah pertandingan') dari dual;

Query 2: Pilih Decode (1234, 123, '123 adalah pertandingan', 'tidak cocok') dari dual;

Query 3: Pilih Decode ('Search', 'comp1', 'true1', 'comp2', 'true2', 'search', 'true3', substr ('2Search', 2, 6), ' salah ') dari dual;

Permintaan satu membandingkan nilai 1234 dan 123. Karena mereka tidak sama, maka iftrue1 diabaikan dan karena tidak didefinisikan jika null dikembalikan. Kueri identik dengan kueri 1, pengecualian bahwa nilai IFFALSE didefinisikan. Karena 1234 tidak sama dengan 123, iffalse dikembalikan - 'tidak cocok'. Kueri tiga memeriksa nilai parameter pada mencocokkan nilai pencarian. Parameter comp1 dan comp2 tidak sama dengan 'pencarian' oleh karena itu, hasil iftrue1 dan iftrue2 dilewati. Kebetulan ditemukan dalam perbandingan perbandingan ketiga dari elemen Comp3 (posisi parameter 6) dan nilai iftrue3 (parameter 7) dikembalikan yang 'true3'. Karena kebetulan ditemukan lebih banyak perhitungan tidak dilakukan. Artinya, terlepas dari kenyataan bahwa nilai COMP4 (parameter 8) juga bertepatan dengan expr1 - ungkapan ini tidak pernah dihitung sejak kebetulan ditemukan pada perbandingan sebelumnya.

Ekspresi kasus.

Semua bahasa pemrograman generasi ketiga dan keempat menerapkan desain kasus. Seperti fungsi decode, ekspresi kasus memungkinkan Anda menerapkan logika jika-kemudian. Dua opsi untuk menggunakan ekspresi kasus tersedia. Ekspresi kasus sederhana menetapkan elemen sumber untuk membandingkan sekali, dan kemudian mencantumkan semua kondisi verifikasi yang diperlukan. Kasing kompleks (dicari) menghitung kedua operator untuk setiap kondisi.

Ekspresi kasus memiliki tiga parameter wajib. Sintaks ekspresi tergantung pada jenisnya. Untuk kasus ekspresi sederhana, dia terlihat seperti

Case Search_Expr.

Saat perbandingan_expr1 maka iftrue1

}