Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara menggunakan Decode di Oracle

Pengantar dekode sql Oracle

Di bagian ini, kita akan membahas tentang pemrosesan dekode Oracle yang merupakan aspek yang sangat penting dari pernyataan sql Oracle

Oracle decode adalah metode dalam database Oracle untuk mengubah nilai data dari satu nilai ke nilai lain yang lebih baik untuk dipahami. Oracle Decode mengubah nilai data pada waktu pengambilan.

Ini adalah jenis Jika maka yang lain untuk pemrosesan

Blok kode untuk Oracle sql Decode di bawah

decode(ekspresi atau nama kolom, kecocokan, hasil [,cocok, hasil]…[,default] )

Berikut adalah arti dari istilah dalam kode di atas
a) ekspresi atau kolom  adalah nilai yang akan dibandingkan
b) cocok adalah nilai yang dibandingkan dengan ekspresi
c) result adalah nilai yang dikembalikan, jika ekspresi sama dengan kecocokan
d) default adalah opsional. Jika tidak ada kecocokan yang ditemukan, decode akan mengembalikan default. Jika default dihilangkan, maka pernyataan decode akan mengembalikan NULL (tidak ditemukan kecocokan).

Contoh

pilih
decode (
Kode Fase,
'P','Tertunda',
'C','Selesai',
'T',' Dihentikan',
'S','Standby',
'UNKNOWN'
)
dari
FND_REQUESTS;

Berikut adalah algoritme untuk lebih memahaminya

1) Oracle mengambil nilai kolom kode Fase
2) jika Kode Fase ='P'  lalu Tertunda
3) jika Kode Fase ='C'  lalu Selesai
4) jika Kode Fase ='T'  lalu Dihentikan
5) jika kode Fase ='S'  lalu Siaga
6) Jika kode Fase bukan salah satu dari yang di atas , dekode kembali Tidak Diketahui
7) Jika default tidak ada itu akan memberikan null

Perhatikan bahwa dekode Oracle dimulai dengan menentukan nama kolom atau ekspresi, diikuti dengan kumpulan nilai transformasi pasangan yang cocok. Di akhir pernyataan decode kami menemukan nilai default. Nilai default memberitahu decode apa yang akan ditampilkan jika nilai kolom tidak ada dalam daftar pasangan.

Kita bisa mengatakan algoritmanya seperti ini

if (expr ==search1)
return(result1);
elseif (expr ==search2)
return( result2);
…elseif (expr ==searchn)
return(resultn);
else
return(default);

Beberapa poin lagi yang perlu diingat untuk Oracle Decode

1) Dalam fungsi DECODE, Oracle menganggap dua nol setara. Jika expr adalah null, maka Oracle mengembalikan hasil pencarian pertama yang juga null.

SQL> SELECT decode(null,null,1,0) FROM dual;
DECODE(NULL,NULL,1,0)
———————
1

2) Jumlah maksimum komponen dalam fungsi DECODE, termasuk expr, pencarian, hasil, dan default, adalah 255.

3) Oracle secara otomatis mengonversi nilai untuk ekspresi dan compare_value ke tipe data dari compare_value pertama. Juga tipe data dari return_value dikonversi ke tipe data dari return_value pertama. Jika hasil pertama memiliki tipe data CHAR atau jika hasil pertama adalah null, maka Oracle mengonversi nilai yang dikembalikan ke tipe data VARCHAR2

Cara membaca decode di Oracle

kita dapat membaca pernyataan decode sebagai pernyataan if-else if. Argumen pertama dalam pernyataan decode umumnya adalah beberapa kolom di mana transformasi data diperlukan. Argumen setelah itu akan membandingkan nilai argumen pertama dengannya

FAQ tentang pemrosesan Oracle sql Decode

(1)Kita telah melihat bahwa "expr" disamakan dengan nilai yang ditentukan, Bisakah kita menggunakan operator pertidaksamaan seperti> atau

Mari kita ambil contoh
SELECT DECODE(gaji,<50000, sal + 1000, sal + 500) Final_salary FROM emp;
ERROR pada baris 2
ORA-00936:ekspresi hilang
Jadi kita tidak bisa menggunakan itu. Kita perlu menggunakan pernyataan kasus untuk melakukannya. atau kita dapat menandatangani fungsi dalam decode  untuk mencapainya
SELECT DECODE(sign(salary- 50000), -1,sal + 1000, sal + 500) Final_salary FROM emp;
Pada dasarnya, kita perlu mengonversi persyaratan untuk beberapa formula yang dapat mengevaluasi beberapa nilai

(2)Bagaimana cara membandingkan dua nilai kolom menggunakan oracle decode?

PILIH col1,col2 decode( abs(col1-col2), 0, ‘col1 =col2’,Col1-col2, ‘col1> col2′,’col1 DARI example_tab;

(3) Apa perbedaan antara Decode dan CASE

CASE dapat bekerja sebagai konstruksi PL/SQL tetapi DECODE hanya digunakan dalam pernyataan SQL.CASE dapat digunakan sebagai parameter fungsi/prosedur.
CASE mengharapkan konsistensi tipe data, DECODE tidak
CASE mengharapkan tipe data konsistensi, DECODE tidak
DECODE hanya dapat bekerja dengan nilai skalar tetapi CASE dapat bekerja dengan operator logika, predikat, dan subkueri yang dapat ditelusuri.

(4) Apakah oracle decode memiliki batas

Ya Jumlah maksimum komponen dalam fungsi DECODE, termasuk expr, pencarian, hasil, dan default, adalah 255.

Tautan terkait
Dokumentasi Oracle tentang decode
cara menulis kueri sql
Pernyataan Sql Dasar
Pernyataan Kasus Oracle Dijelaskan dengan Tip dan Contoh
Tutorial SQL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kunci liquibase - alasan?

  2. Pengguna Umum Dengan hak istimewa SYSBACKUP

  3. tidak dapat menerima parameter dari prosedur Oracle yang dijalankan oleh mybatis

  4. Menggabungkan Data Menggunakan Fungsi Grup (grup demi oracle)

  5. Oracle SQL - max() dengan nilai NULL