sql >> Database >  >> RDS >> Oracle

COALESCE() Functie in Oracle

In Oracle Database, de COALESCE() functie retourneert de eerste niet-null-uitdrukking in de lijst met uitdrukkingen.

Syntaxis

De syntaxis gaat als volgt:

COALESCE(expr [, expr ]...)

Er moeten ten minste twee uitdrukkingen worden doorgegeven.

Voorbeeld

Hier is een voorbeeld om te demonstreren:

SELECT COALESCE(null, 7)
FROM DUAL;

Resultaat:

7

Hier zijn nog enkele voorbeelden:

SET NULL 'null';
SELECT
    COALESCE(null, null, 1, 2, 3) AS "r1",
    COALESCE(1, null, 2, 3) AS "r2",
    COALESCE(null, 3, 2, 1) AS "r3",
    COALESCE(1, 2, 3, null) AS "r4",
    COALESCE(null, null) AS "r5"
FROM DUAL;

Resultaat:

   r1    r2    r3    r4      r5 
_____ _____ _____ _____ _______ 
    1     1     3     1 null   

We kunnen zien dat COALESCE() retourneert null wanneer alle argumenten nul zijn.

Met betrekking tot de eerste regel SET NULL 'null'; , ik heb dat toegevoegd zodat mijn SQLcl-sessie null returns retourneert wanneer het resultaat nul is.

Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null treedt op als resultaat van een SQL SELECT uitspraak.

U kunt echter SET NULL . gebruiken om een ​​andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null moet worden geretourneerd.

Databasevoorbeeld

Stel dat we de volgende query uitvoeren:

SET NULL 'null';
SELECT 
    LOCATION_ID,
    STATE_PROVINCE
FROM LOCATIONS
ORDER BY LOCATION_ID ASC
FETCH FIRST 6 ROWS ONLY;

Resultaat:

   LOCATION_ID      STATE_PROVINCE 
______________ ___________________ 
          1000 null                
          1100 null                
          1200 Tokyo Prefecture    
          1300 null                
          1400 Texas               
          1500 California          

We kunnen zien dat verschillende rijen null . zijn in de STATE_PROVINCE kolom.

Hier is de vraag opnieuw, maar deze keer gebruiken we COALESCE() tegen de STATE_PROVINCE kolom:

SELECT 
    LOCATION_ID,
    COALESCE(STATE_PROVINCE, 'N/A')
FROM LOCATIONS
ORDER BY LOCATION_ID ASC
FETCH FIRST 6 ROWS ONLY;

Resultaat:

   LOCATION_ID    COALESCE(STATE_PROVINCE,'N/A') 
______________ _________________________________ 
          1000 N/A                               
          1100 N/A                               
          1200 Tokyo Prefecture                  
          1300 N/A                               
          1400 Texas                             
          1500 California                        

Dus gebruikten we COALESCE() om N/A te retourneren telkens wanneer een null-waarde is opgetreden.

COALESCE() vs CASE

Het volgende:

COALESCE(expr1, expr2)

Komt overeen met dit:

CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END

Ongeldig aantal argumenten

Het aanroepen van de functie zonder het doorgeven van argumenten resulteert in een fout:

SELECT COALESCE()
FROM DUAL;

Resultaat:

SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"

  1. PostgreSQL INSERT ON CONFLICT UPDATE (upsert) gebruik alle uitgesloten waarden

  2. ORA-01264 in fysieke stand-by

  3. Interne SQL Server:problematische operators Pt. III – Soorten

  4. Exporteer Postgresql-tabelgegevens met pgAdmin