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

Jak korzystać z funkcji łączenia w Oracle

Co to jest funkcja łączenia

Funkcja łączenia jest użyteczną funkcją w oracle i jest bardzo przydatna, gdy chcemy zwrócić pierwsze niepuste wartości z listy. Ten samouczek SQL zawiera wyjaśnienia, przykłady funkcji łączenia w Oracle oraz różnice między połączeniem i NVL

wyr1 :To jest zwracane, jeśli nie ma wartości NULL
expr2:To jest zwracane, jeśli nie jest NULL, a pierwsze wyrażenie jest NULL
exprn:To jest zwracane, jeśli poprzednie wyrażenie jest NULL

Tak więc Łączenie w Oracle zwróci pierwsze wyrażenie, jeśli nie jest puste, w przeciwnym razie połączy resztę wyrażenia

Ważny punkt

(1) Baza danych Oracle wykorzystuje ocenę zwarcia. Baza danych ocenia każdą wartość wyrażeń i określa, czy jest ona NULL, zamiast oceniać wszystkie wartości wyrażeń przed określeniem, czy którakolwiek z nich jest NULL.

(2)COALESCE w Oracle jest równoważne funkcji Case

Tak więc COALESCE (wyrażenie1, wyrażenie2) jest równoważne:

CASE WHEN expr1 IS NOT NULL THEN expr1

ELSE expr2 END

Podobnie,

COALESCE (expr1, expr2, …, exprn), dla n>=3 jest równoważne:

CASE WHEN expr1 IS NOT NULL THEN expr1
WHEN expr2 IS NOT NULL THEN expr2

WHEN expr3 IS NOT NULL THEN expr3

WHEN exprn IS NOT NULL THEN exprn

END

Lub można to zapisać jako

CASE WHEN expr1 IS NOT NULL THEN expr1
ELSE COALESCE (expr2, ..., exprn) END

(3) Zwykle wszystkie wyrażenia wyrażenia koalescencyjnego powinny być tego samego typu danych, w przeciwnym razie zostanie zwrócone ORA-00932.

SQL> select coalesce('a',1,2) from dual;
select coalesce('a',1,2) from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected CHAR got NUMBER

Jeśli wszystkie wystąpienia wyrażenia mają numeryczny typ danych lub dowolny nienumeryczny typ danych, który można niejawnie przekonwertować na numeryczny typ danych, Oracle Database określa argument o najwyższym priorytecie liczbowym, niejawnie konwertuje pozostałe argumenty na ten typ danych i zwraca ten typ danych.

Jak korzystać z funkcji łączenia

SQL> select coalesce(1,2,3) from dual;
COALESCE(1,2,3)
---------------
1

SQL> SELECT COALESCE(null, null, null, 'X', 'Y');
COALESCE(...)
---------------
X

Przykłady łączenia

Załóżmy, że mamy tabelę wyroczni pracowników składającą się z adresu1, adres2 i adres3 i możemy chcieć wydrukować pierwszy niepusty adres pracowników z tabeli w kolejności priorytet adres1> adres2> adres3

select emp_name, COALESCE(address1,address2,address3) from employee;

Różnica między funkcją łączenia i NVL

  1. Coalesce to uogólnienie funkcji NVL. Funkcja NVL może być użyta dla dwóch wyrażeń, a koalescencja może być użyta dla wielu
  2. W przypadku dwóch wyrażeń są one takie same, ale implementacja jest inna.Oracle oblicza oba wyrażenia w przypadku NVL, podczas gdy w przypadku koalescencji po prostu ocenia pierwsze wyrażenie.Więc jeśli drugie wyrażenie zawiera błędy, NVL wygeneruje błąd podczas gdy połączenie nie będzie.
  3. Coalesce to standard ANSI, podczas gdy NVL jest specyficzny dla Oracle

Powiązane artykuły

Samouczek Oracle Sql
Funkcja NULLIF w Oracle
Funkcja NVL w Oracle
Funkcja Oracle LITAGG
https://docs.oracle.com/cd/B28359_01/server.111/b28286/ funkcje023.htm#SQLRF00617


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL odpowiednik ORACLES rank()

  2. Przebieg logowania w R12.2 i podstawowe rozwiązywanie problemów

  3. jak zrobić funkcję, aby zwrócić typ wiersza z tabeli w pl/sql?

  4. Zabawa z wiadomościami

  5. 12c Redakcja danych