sql >> Databasteknik >  >> RDS >> Oracle

Oracle GROUP_CONCAT() ekvivalent

Vissa RDBMS har en GROUP_CONCAT() funktion som låter dig returnera en frågekolumn som en avgränsad lista (till exempel en kommaseparerad lista). MySQL och MariaDB är två som har en sådan funktion.

PostgreSQL och SQL Server har liknande funktioner som kallas STRING_AGG() .

Oracle, å andra sidan, har LISTAGG() funktion som gör ungefär samma sak (och kanske mer).

Så du kan säga att LISTAGG() är Oracles GROUP_CONCAT() motsvarande.

Exempel

Här är ett grundläggande exempel för att visa hur Oracles LISTAGG() funktionen fungerar:

SELECT LISTAGG(region_name, ',') 
FROM regions;

Resultat:

                      LISTAGG(REGION_NAME,',') 
______________________________________________ 
Europe,Americas,Asia,Middle East and Africa   

I det här fallet specificerade jag att avgränsaren är ett kommatecken.

Här är vad som händer när vi bara gör frågan utan LISTAGG() funktion:

SELECT region_name 
FROM regions;

Resultat:

              REGION_NAME 
_________________________ 
Europe                    
Americas                  
Asia                      
Middle East and Africa  

Vi får fyra rader, var och en med ett separat värde, istället för en kommaseparerad rad som innehåller alla värden.

LISTAGG() Funktionen gör det också möjligt för oss att beställa resultaten, endast returnera unika värden (via DISTINCT klausul) och mer.

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


  1. Index för att hitta ett element i en JSON-array

  2. Hur man återställer en databas med Backup Manager

  3. org.hibernate.internal.util.config.ConfigurationException:Kunde inte hitta cfg.xml-resursen [/HibernateTest/src/hibernate.cfg.xml]

  4. Referensalias i WHERE-satsen