sql >> Databasteknik >  >> RDS >> Oracle

Returnera frågeresultat som en kommaseparerad lista i Oracle

I Oracle kan vi använda LISTAGG() funktion för att konvertera våra frågeresultat till en kommaseparerad lista.

Så istället för att varje värde matas ut i en separat rad, matas alla värden ut på en enda rad, åtskilda av ett kommatecken (eller någon annan avgränsare som vi väljer).

Exempel

Föreställ dig att vi kör följande fråga:

SELECT last_name 
FROM employees
WHERE job_id = 'IT_PROG';

Resultat:

   LAST_NAME 
____________ 
Hunold       
Ernst        
Austin       
Pataballa    
Lorentz      

Den frågan returnerade fem rader, var och en med olika värde.

Om vi ​​vill att dessa värden ska matas ut på en enda rad kan vi göra följande:

SELECT LISTAGG(last_name, ', ')
FROM employees
WHERE job_id = 'IT_PROG';

Resultat:

                      LISTAGG(LAST_NAME,',') 
____________________________________________ 
Hunold, Ernst, Austin, Pataballa, Lorentz    

Allt vi gjorde var att skicka kolumnnamnet till LISTAGG() funktion, samt vår valda avgränsare.

Vi kan använda en annan avgränsare eller så kan vi utelämna det argumentet helt så att alla objekt sammanfogas.

Funktionen accepterar även en DISTINCT sats (för att ta bort dubbletter av värden) och en ORDER BY klausul (för att beställa utdata från funktionen).

Funktionen kan också vara ganska praktisk när du grupperar frågeresultat.

Se LISTAGG() Funktion i Oracle för fler exempel.


  1. 4 sätt att hitta rader som innehåller versaler i PostgreSQL

  2. Lagra filer i SQL-databas med FILESTREAM – Del 1

  3. Hur man gör en Full Outer Join i MySQL

  4. Kan vi ansluta fjärransluten MySQL-databas i Android med JDBC?