Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak korzystać z dekodowania w Oracle

Wprowadzenie do dekodowania Oracle sql

W tej sekcji omówimy przetwarzanie dekodowania Oracle, które jest bardzo ważnym aspektem instrukcji Oracle sql

Wyrocznia decode to metoda w bazie danych Oracle służąca do przekształcania wartości danych z jednej wartości na drugą, co jest lepsze do zrozumienia. Oracle Decode przekształca wartości danych w czasie pobierania.

Jest to rodzaj Jeśli to inaczej do przetwarzania

Blok kodu dla Oracle sql Decode znajduje się poniżej

decode(nazwa wyrażenia lub kolumny, dopasowanie, wynik [,dopasowanie, wynik]…[,domyślnie] )

Oto znaczenie terminów w powyższym kodzie
a) wyrażenie lub kolumna  to wartość do porównania
b) dopasowanie to wartość porównywana z wyrażeniem
c) wynik to zwrócona wartość, jeśli wyrażenie jest równe dopasowanie
d) wartość domyślna jest opcjonalna. Jeśli nie zostaną znalezione żadne dopasowania, dekodowanie zwróci wartość domyślną. Jeśli pominięto wartość domyślną, instrukcja decode zwróci NULL (nie znaleziono dopasowań).

Przykład

wybierz
dekodowanie (
Kod fazy,
'P','Oczekuje',
'C','Zakończono',
'T',' Zakończono”,
„S”, „W gotowości”,
„NIEZNANE”
)
z
FND_REQUESTS;

Oto algorytm, który pozwoli lepiej to zrozumieć

1) Oracle pobierze  wartość kolumny Kod fazy
2) jeśli Kod fazy =„P” to Oczekująca
3) jeśli Kod fazy =„C” to Zakończono
4) jeśli Kod fazy =„T”  wtedy Zakończono
5) jeśli kod fazy =„S” to tryb gotowości
6) Jeśli kod fazy nie jest żadnym z powyższych , dekodowanie zwraca Nieznany
7) Jeśli wartość domyślna nie jest obecna da null

Należy zauważyć, że dekodowanie Oracle rozpoczyna się od określenia nazwy kolumny lub wyrażenia , po którym następuje zestaw dopasowanych par wartości transformacji. Na końcu instrukcji decode znajdujemy wartość domyślną. Wartość domyślna mówi dekodować, co wyświetlić, jeśli wartości kolumny nie ma na sparowanej liście.

Algorytm moglibyśmy powiedzieć w ten sposób

if (wyrażenie ==szukaj1)
return(wynik1);
elseif (wyraż ==szukaj2)
return( wynik2);
…elseif (expr ==searchn)
return(wynikn);
else
return(domyślnie);

Więcej punktów do zapamiętania w przypadku Oracle Decode

1) W funkcji DECODE Oracle uważa dwie wartości null za równoważne. Jeśli wyrażenie ma wartość null, Oracle zwraca wynik pierwszego wyszukiwania, który również ma wartość null.

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

2) Maksymalna liczba komponentów w funkcji DECODE, w tym expr, wyszukiwania, wyniki i wartość domyślna, to 255.

3)Oracle automatycznie konwertuje wartości dla wyrażenia i wartość_porównania na typ danych pierwszej wartości_porównania. Również typ danych return_value jest konwertowany na typ danych pierwszego return_value. Jeśli pierwszy wynik ma typ danych CHAR lub jeśli pierwszy wynik jest pusty, Oracle konwertuje wartość zwracaną na typ danych VARCHAR2

Jak czytać dekodowanie w Oracle

możemy odczytać instrukcję decode jako instrukcję if-else if. Pierwszym argumentem w instrukcji decode będzie zazwyczaj kolumna, w której potrzebna jest transformacja danych. Kolejny argument będzie porównywał z nim wartości pierwszego argumentu

Często zadawane pytania dotyczące przetwarzania dekodowania Oracle sql

(1)Zauważyliśmy, że „wyrażenie” jest utożsamiane z określonymi wartościami. Czy możemy używać operatorów nierówności, takich jak> lub

Weźmy przykład
SELECT DECODE(salary,<50000, sal + 1000, sal + 500) Final_salary FROM emp;
BŁĄD w wierszu 2
ORA-00936:brak wyrażenia
Więc nie możemy tego użyć. Aby to zrobić, musimy użyć instrukcji case. lub możemy podpisać funkcję w dekodowaniu, aby to osiągnąć
SELECT DECODE(sign(salary-50000), -1,sal + 1000, sal + 500) Final_salary FROM emp;
Zasadniczo musimy przekonwertować wymaganie do jakiejś formuły, która może oszacować do pewnej wartości

(2)Jak porównać wartości dwóch kolumn za pomocą dekodowania Oracle?

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

(3) Jaka jest różnica między dekodowaniem a CASE

CASE może działać jako konstrukcja PL/SQL, ale DECODE jest używany tylko w instrukcjach SQL. CASE może być używany jako parametr funkcji/procedury.
CASE oczekuje spójności typów danych, DECODE nie
CASE oczekuje spójności typów danych spójność, DECODE nie
DECODE może działać tylko z wartościami skalarnymi, ale CASE może działać z operatorami logicznymi, predykatami i przeszukiwalnymi podzapytaniami.

(4) Czy dekodowanie Oracle ma limit

Tak Maksymalna liczba komponentów w funkcji DECODE, w tym wyrażenie, wyszukiwania, wyniki i wartość domyślna, wynosi 255.

Powiązane linki
Dokumentacja Oracle dotycząca dekodowania
jak pisać zapytania SQL
Podstawowa instrukcja SQL
Oświadczenie Oracle Case wyjaśnione z poradami i przykładami
Samouczek 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. Przebieg logowania w R12.2 i podstawowe rozwiązywanie problemów

  2. Odpowiednik funkcji WM_CONCAT w SQL Server

  3. Różnica między klauzulą ​​WITH a podzapytanie?

  4. Czy istnieje oficjalna rekomendacja Oracle dotycząca używania jawnych złączeń ANSI JOIN w porównaniu ze złączeniami niejawnymi?

  5. Jak używać parametrów w klauzuli „where value in...”?