Kami telah melihat cara kerja pemrosesan Oracle Decode di posting sebelumnya
Pemrosesan dekode sql Oracle
Sekarang mari kita lihat pemrosesan pernyataan Oracle Case
Pernyataan kasus di Oracle
Hal ini mirip dengan pernyataan Decode. Database sebelum Oracle 8.1.6 hanya memiliki fungsi DECODE. CASE diperkenalkan di Oracle 8.1.6 sebagai fungsi standar, lebih bermakna, dan lebih kuat.
Semua yang DECODE bisa lakukan, CASE juga bisa. Ada banyak hal lain yang bisa dilakukan CASE, yang tidak bisa dilakukan DECODE. Kami akan membahas contoh mendetail dalam artikel ini
Mari kita mulai dengan Sintaks pernyataan Kasus
CASE [expression] when condition_1 then value_1 when condition_2 then value_2 when condition_2 then value_2 …. else value_n end
ekspresi adalah opsional
Kita dapat membagi pernyataan Kasus menjadi dua kategori Pernyataan Kasus Sederhana dan Pernyataan Kasus yang Dapat Dicari
Pernyataan kasus sederhana seperti fungsi Decode.
Contoh dengan pernyataan KASUS Sederhana
select case region when ‘N’ then ’North’ when ‘S’ then ’South’ when ‘E’ then ’East’, when ‘W’ then ’West’ else ‘UNKNOWN’ end from customer;
Pernyataan Kasus yang Dapat Dicari adalah pernyataan kasus di mana kita menentukan suatu kondisi atau predikat (pernyataan kasus dalam oracle dengan beberapa kondisi)
SQL> select emp_name , case when Salary < 10000 then 'Junior Level' when (Salary >=10000 and Salary < 50000) then 'Middle Level' when (Salary >= 50000 and Salary < 100000) then 'Senior Level' else 'Managers' end Emp_level from employee_info where rownum < 5; EMP_NAME EMP_LEVEL ---------- --------- JOHN Junior Level DON Senior Level BOB Manager BILL Middle Level
Pernyataan Kasus Oracle Bersarang
Ini adalah pernyataan kasus dalam pernyataan kasus
SQL> select emp_name , case when Salary < 10000 then 'Junior Level' when (Salary >=10000 and Salary < 50000) then 'Middle Level' when (Salary >= 50000 and Salary < 100000) then 'Senior Level' else (Case when grade ='20' then 'Vice President' when grade='21' then 'Senior Vice President' else 'Manager' End) end Emp_level from employee_info where rownum < 5;
Poin penting tentang pernyataan Kasus Sederhana dan dapat ditelusuri
(1) KASUS yang dicari mengevaluasi kondisi secara independen di bawah masing-masing opsi "kapan". Dengan struktur ini, kondisi yang jauh lebih kompleks dapat diimplementasikan dengan CASE yang dicari daripada CASE sederhana.
(2) CASE yang dicari dapat menggabungkan beberapa pengujian menggunakan beberapa kolom, perbandingan, dan operator DAN/ATAU.
(3) Baik konstruksi CASE sederhana maupun yang dicari, kondisi dievaluasi secara berurutan dari atas ke bawah, dan eksekusi keluar setelah kecocokan pertama ditemukan. Jadi, misalkan lebih dari satu kondisi benar, hanya tindakan pertama yang dipertimbangkan.
(4) Oracle Database menggunakan evaluasi hubung singkat. Artinya, untuk ekspresi CASE sederhana, database mengevaluasi setiap nilai comparasi_expr hanya sebelum membandingkannya dengan expr, daripada mengevaluasi semua nilai perbandingan_expr sebelum membandingkannya dengan expr. Akibatnya, Oracle tidak pernah mengevaluasi perbandingan_expr jika perbandingan_expr sebelumnya sama dengan expr. Untuk ekspresi CASE yang dicari, database mengevaluasi setiap kondisi untuk menentukan apakah itu benar, dan tidak pernah mengevaluasi suatu kondisi jika kondisi sebelumnya benar
Sekarang mari kita lihat perbedaan antara pernyataan Kasus dan Dekode
(1) DECODE hanya dapat bekerja dengan nilai skalar tetapi CASE dapat bekerja dengan operator logika, predikat, dan subkueri yang dapat ditelusuri.
Kita tahu bahwa decode dapat bekerja dengan nilai skalar. Kami tidak dapat menggunakannya untuk operator Logika. Kita harus mengubahnya menjadi nilai skalar untuk memanfaatkannya.
Kasus membuat seluruh proses lebih mudah. Kita dapat dengan mudah menggunakan operator logika dalam pernyataan Kasus
SQL> select city , case when population < 100000 then 'Tier I' when (population >=100000 and population < 200000) then 'Tier II' when (population >= 200000 and population < 300000) then 'Tier III' else 'TIER IV' end City_Tier from city_info where rownum < 5; CITY CITY_TIER ---------- --------- XYX TIER I XYZ TIER II XZW TIER II
Di atas disebut pernyataan Kasus yang dapat ditelusuri
(2) CASE dapat bekerja sebagai konstruksi PL/SQL tetapi DECODE hanya digunakan dalam pernyataan SQL. CASE dapat digunakan sebagai parameter fungsi/prosedur.
Contoh
DECLARE V_x VARCHAR2(10) := 'A'; V_y VARCHAR2(10); BEGIN V_y := CASE V_x WHEN 'A' THEN 'Excellent' WHEN 'B' THEN 'Good' WHEN 'C' Then 'Average' ELSE 'Poor' END; DBMS_OUTPUT.PUT_LINE( 'Grade V_x is '||V_y||'.' ); END; /
Grade V_x Sangat Bagus.
(3) CASE mengharapkan konsistensi tipe data, DECODE tidak.
select case 5 when 1 then '1' 2 when '2' then '2' 3 else '5' 4 end 5 from dual; when '2' then '2' * ERROR at line 2: ORA-00932: inconsistent datatypes: expected NUMBER got CHAR
(4) CASE sesuai dengan ANSI SQL. DECODE adalah milik Oracle.
(5) CASE dieksekusi lebih cepat di pengoptimal daripada DECODE.
(6) CASE adalah pernyataan sedangkan DECODE adalah fungsi.
Artikel Terkait
Tutorial Oracle sql :Daftar semua pelajaran tutorial sql yang dapat digunakan untuk menguasai sql dan digunakan dalam manajemen dan manipulasi data RDBMS (Oracle,MySql)
Pertanyaan wawancara Oracle:Lihat halaman ini untuk 49 Teratas Oracle Wawancara pertanyaan dan jawaban:Dasar-dasar, Oracle SQL untuk membantu Anda dalam wawancara.
oracle PLSQL record:Lihat artikel ini tentang cara kerja oracle PLSQL record. Juga, temukan berbagai cara untuk mendefinisikannya dan memberikan nilai padanya
Alat pengembang Oracle SQL:Lihat halaman ini untuk semua informasi tentang alat pengembang Oracle sql,Cara melakukan unduhan pengembang Oracle sql, cara menginstal
fungsi tanggal Oracle :Lihat posting ini untuk fungsi tanggal Oracle, perbedaan tanggal Oracle dalam tahun, perbedaan tanggal Oracle dalam hari, perbedaan tanggal Oracle dalam bulan.
https://docs.Oracle.com/cd /B19306_01/server.102/b14200/expressions004.htm
Kursus yang Direkomendasikan
Berikut adalah Kursus Udemy yang bagus untuk Oracle SQL
Oracle-Sql-Step-by-step :Kursus ini mencakup sql dasar, bergabung, Membuat Tabel dan memodifikasi strukturnya, Membuat Tampilan, Union, Union -semua dan banyak hal lainnya . Kursus yang bagus dan kursus yang harus dimiliki untuk pemula SQL
Kursus Sertifikasi Oracle SQL Lengkap :Ini adalah kursus yang bagus untuk siapa saja yang ingin siap kerja untuk keterampilan pengembang SQL. Kursus yang dijelaskan dengan baik
Pengembang Oracle SQL:Esensi, Kiat, dan Trik :Alat pengembang Oracle Sql sedang digunakan oleh banyak pengembang. Kursus ini memberi kita trik dan pelajaran tentang cara menggunakannya secara efektif dan menjadi pengembang sql yang produktif
Oracle SQL Performance Tuning Masterclass 2020 :Penyetelan kinerja adalah salah satu keterampilan yang penting dan paling dicari. Ini adalah kursus yang bagus untuk mempelajarinya dan mulai melakukan penyetelan kinerja sql