sql >> Databáze >  >> RDS >> Oracle

Jak používat Decode v Oracle

Úvod do dekódování Oracle SQL

V této části budeme diskutovat o zpracování dekódování Oracle, které je velmi důležitým aspektem příkazu Oracle sql

Oracle decode je metoda v databázi Oracle k transformaci datových hodnot z jedné hodnoty na jinou, které je lépe rozumět. Oracle Decode transformuje datové hodnoty v době načítání.

Je to typ Jestli jinak pro zpracování

Blok kódu pro Oracle sql Decode je níže

dekódovat (název výrazu nebo sloupce, shoda, výsledek [, shoda, výsledek]…[, výchozí] )

Zde je význam výrazů ve výše uvedeném kódu
a) výraz nebo sloupec  je hodnota k porovnání
b) shoda je hodnota, která se porovnává s výrazem
c) výsledek je vrácená hodnota, pokud se výraz rovná shodě
d) výchozí hodnota je volitelná. Pokud nebudou nalezeny žádné shody, dekódování vrátí výchozí. Pokud je default vynecháno, pak příkaz decode vrátí NULL (nenalezeny žádné shody).

Příklad

vyberte
dekódovat (
Kód fáze,
'P','Nevyřízeno',
'C','Dokončeno',
'T',' Ukončeno',
'S','Standby',
'UNKNOWN'
)
od
FND_REQUESTS;

Zde je algoritmus pro lepší pochopení

1) Oracle načte  hodnotu sloupce Kód fáze
2) pokud kód fáze ='P', pak Nevyřízeno
3) pokud kód fáze ='C', pak Dokončeno
4) pokud kód fáze ='T' potom ukončeno
5) pokud kód fáze ='S' , pak pohotovostní režim
6) Pokud kód fáze není ani jeden z výše uvedených, dekód vrátí hodnotu Neznámý
7) Pokud není k dispozici výchozí nastavení bude mít hodnotu null

Všimněte si, že dekódování Oracle začíná zadáním názvu sloupce nebo výrazu, po kterém následuje sada shodných párů transformačních hodnot. Na konci příkazu decode najdeme výchozí hodnotu. Výchozí hodnota říká dekódování, co se má zobrazit, pokud hodnoty sloupce nejsou ve spárovaném seznamu.

Algoritmus bychom mohli říci takto

if (expr ==search1)
return(result1);
elseif (expr ==search2)
return( result2);
…elseif (expr ==searchn)
return(resultn);
else
return(výchozí);

Některé další body k zapamatování pro Oracle Decode

1)Ve funkci DECODE považuje Oracle dvě nuly za ekvivalentní. Je-li výraz expr null, pak Oracle vrátí výsledek prvního vyhledávání, který je rovněž null.

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

2) Maximální počet komponent ve funkci DECODE, včetně výrazu, vyhledávání, výsledků a výchozího nastavení, je 255.

3) Oracle automaticky převede hodnoty výrazu a porovnat_hodnotu na datový typ první porovnat_hodnotu. Také datový typ return_value je převeden na datový typ první return_value. Pokud má první výsledek datový typ CHAR nebo pokud je první výsledek null, pak Oracle převede návratovou hodnotu na datový typ VARCHAR2

Jak číst dekódování v Oracle

můžeme číst příkaz dekódovat jako příkaz if-else if. První argument v příkazu dekódování bude obecně nějaký sloupec, kde je potřeba transformace dat. Dalším argumentem bude porovnání hodnot prvního argumentu s ním

Časté dotazy o zpracování dekódování Oracle sql

(1) Viděli jsme, že výraz „expr“ se rovná zadaným hodnotám. Můžeme použít operátory nerovnosti jako> nebo

Vezměme si příklad
SELECT DECODE(plat,<50000, sal + 1000, sal + 500) Final_salary FROM emp;
ERROR na řádku 2
ORA-00936:chybějící výraz
Takže to nemůžeme použít. K tomu potřebujeme použít případové prohlášení. nebo můžeme podepsat funkci v dekódování, abychom toho dosáhli
SELECT DECODE(sign(plat- 50000), -1,sal + 1000, sal + 500) Final_salary FROM emp;
V podstatě musíme převést naše požadavek na nějaký vzorec, který lze vyhodnotit na nějakou hodnotu

(2)Jak porovnat dvě hodnoty sloupců pomocí dekódování Oracle?

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

(3) Jaký je rozdíl mezi Decode a CASE

CASE může fungovat jako konstrukce PL/SQL, ale DECODE se používá pouze v příkazech SQL. CASE lze použít jako parametr funkce/procedury.
CASE očekává konzistenci datových typů, DECODE nikoli
CASE očekává datový typ konzistence, DECODE ne
DECODE může pracovat pouze se skalárními hodnotami, ale CASE může pracovat s logickými operátory, predikáty a prohledávatelnými poddotazy.

(4) Má dekódování oracle limit

Ano Maximální počet součástí ve funkci DECODE, včetně výrazu, vyhledávání, výsledků a výchozího nastavení, je 255.

Související odkazy
Dokumentace Oracle k dekódování
jak psát dotazy SQL
Základní příkaz SQL
Příkaz Oracle Case vysvětlený s tipy a příklady
Výukový program SQL


  1. Jak vybrat ID s maximální skupinou data podle kategorie v PostgreSQL?

  2. Zkombinujte PowerShell a SQL Diagnostic Manager pro automatizaci monitorování SQL Serveru

  3. Výukový program MySQL:Klauzule MySQL IN (základní)

  4. Pokud je zadáno SELECT DISTINCT, položky ORDER BY se musí objevit ve výběrovém seznamu