sql >> Database >  >> RDS >> Oracle

Coalesce-functie gebruiken in Oracle

Wat is de Coalesce-functie

Coalesce-functie is een nuttige functie in oracle en het is erg handig als we de eerste niet-null-waarden in de lijst willen retourneren. Deze SQL-tutorial biedt uitleg, voorbeelden voor Coalesce Function in Oracle en het verschil tussen Coalesce &NVL

expr1 :Dit wordt geretourneerd als het niet null is
expr2:Dit wordt geretourneerd als het niet null is en de eerste expressie is null
exprn:Dit wordt geretourneerd als de voorgaande expressie null is

Dus samenvoegen in orakel zal de eerste uitdrukking retourneren als deze niet nul is, anders zal het de rest van de uitdrukking samenvoegen

Belangrijk punt

(1) Oracle Database maakt gebruik van kortsluitingsevaluatie. De database evalueert elke expr-waarde en bepaalt of deze NULL is, in plaats van alle expr-waarden te evalueren voordat wordt bepaald of een van deze NULL is.

(2)COALESCE in orakel is gelijk aan Case-functie

Dus COALESCE (expr1, expr2) is gelijk aan:

CASE WHEN expr1 IS NOT NULL THEN expr1

ELSE expr2 END

Evenzo,

COALESCE (expr1, expr2, …, exprn), voor n>=3 is gelijk aan:

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

Of dit kan worden geschreven als

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

(3) Gewoonlijk moeten alle expr van de coalesce-verklaring van hetzelfde datatype zijn, anders wordt ORA-00932 geretourneerd.

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

Als alle gevallen van expressie een numeriek gegevenstype zijn of een niet-numeriek gegevenstype dat impliciet kan worden geconverteerd naar een numeriek gegevenstype, bepaalt Oracle Database het argument met de hoogste numerieke prioriteit, converteert het impliciet de resterende argumenten naar dat gegevenstype en retourneert dat gegevenstype.

De Coalesce-functie gebruiken

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

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

Voorbeelden samenvoegen

Stel dat we een werknemers-orakeltabel hebben die bestaat uit adres1, adres2 en adres3 en we willen het eerste niet-null-adres van de werknemers uit de tabel afdrukken in volgorde van prioriteit adres1> adres2> adres3

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

Verschil tussen Coalesce en NVL-functie

  1. Coalesce is een generalisatie van de NVL-functie. De NVL-functie kan voor twee uitdrukkingen worden gebruikt, terwijl samenvoegen kan worden gebruikt voor Veel
  2. In het geval van twee expressies, zijn ze hetzelfde, maar de implementatie is anders. Oracle evalueert zowel de expressie in het geval van NVL, terwijl het alleen de eerste expressie evalueert in het geval van samenvloeien. Dus als de tweede expressie fouten bevat, zal NVL een fout genereren terwijl samensmelten dat niet zal doen.
  3. Coalesce is ANSI-standaard, terwijl NVL Oracle-specifiek is

Gerelateerde artikelen

Oracle Sql-zelfstudie
NULLIF-functie in Oracle
NVL-functie in Oracle
Oracle LISTAGG-functie
https://docs.oracle.com/cd/B28359_01/server.111/b28286/ functies023.htm#SQLRF00617


  1. MySQL CAST versus CONVERT

  2. Tabel wijzigen in SQL Server met behulp van Alter Statement - SQL Server / T-SQL Tutorial Part 35

  3. Verouderd:mysql_connect()

  4. SQLite GLOB