Ú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 |
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
SELECT col1,col2 decode( abs(col1-col2), 0, ‘col1 =col2’,Col1-col2, ‘col1> col2′,’col1
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.
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