MySQL Group Concat for Strings

MySQL Group Concat for Strings

Gruppe _concat -funksjon er en gruppe etter samlet funksjon som lar deg sammenkoble kolonneverdier fra flere rader til et enkelt felt. Den returnerer en streng hvis den angitte gruppen inneholder en eller null kolonneverdi og returnerer en nullverdi hvis ingen kan bli funnet.

Denne opplæringen vil lære deg hvordan du bruker mysql group_concat () -funksjon for å kombinere strenger fra en gruppe med flere alternativer.

Grunnleggende bruk

Som vi har nevnt, returnerer denne funksjonen et strengresultat med verdiene til de sammenkoblede ikke-nullverdiene eller en null hvis ingen eksisterer.

Den generelle syntaksen er:

Group_concat ([distinkt] expr [, expr…]
[Bestill av usignert_integer | col_name | expr
[ASC | Desc] [, col_name…]]
[Separator Str_val])

Forklaring

Fra syntaks ovenfor kan du se at Group_Concat -funksjonen bruker MySQL -klausuler og begrensninger for å spesifisere de forskjellige alternativene:

  1. DISTINKT: Den distinkte klausulen hjelper til. Tenk på opplæringen vår som forklarer mysql distinkt for å forstå hvordan den fungerer.
  2. REKKEFØLGE ETTER: Neste leddet er ordren ved det som hjelper til med å sortere verdiene i en spesifisert rekkefølge. Bestillingen kan enten være stigende eller synke. Hvis ingen ordre er spesifisert, formaterer MySQL verdiene i stigende rekkefølge.
  3. Separator: Denne klausulen setter strengen bokstavelig satt inn mellom gruppens verdier etter sammenkoblingsprosessen. Som standard bruker MySQL et komma (,) for å skille verdiene.

MERK: Strengresultatet generert av MySQL Group_Concat () -funksjonen er begrenset til en lengde Verdien som er satt i Group_Concat_Max_Len -variabelen. Denne verdien er definert i systemet og har en standardverdi på 1024. Du kan endre denne verdien globalt eller angi den i økten du trenger.

Sett [globalt | Økt] group_concat_max_len = verdi;

Tenk på referansen nedenfor for å lære mer:

https: // dev.mysql.com/doc/refman/8.0/EN/server-system-variabler.HTML#SYSVAR_GROUP_CONCAT_MAX_LEN

Hvordan det fungerer: Eksempel

Tillat meg å bruke et enkelt eksempel for å forklare hvordan Group_Concat () -funksjonen fungerer. Tenk på bordet med et felt for røye som:

Lage tabell concat (verdi røye);

La oss sette inn verdier i tabellen som vist i spørringen nedenfor:

Sett inn i Concat (Value) Values ​​('H'), ('E'), ('L'), ('L'), ('O');

Hvis vi utfører en grunnleggende group_concat -operasjon på verdiene i tabellen, vil vi få et strengresultat som vist nedenfor:

Velg Group_Concat (distinkt verdi rekkefølge etter verdi ASC -separator "") fra Concat;

Den resulterende verdien er:

+---------------------------------------------------------------+
| Group_concat (distinkt verdi rekkefølge etter verdi ASC -separator "") |
+---------------------------------------------------------------+
| E H L O |
+---------------------------------------------------------------+
1 rad i sett (0.01 sek)

Vil du ha en annen måte å forstå hva som skjedde med resultatet gitt ovenfor?

Vi starter med å fjerne alle duplikatverdiene på grunn av MySQL -distinkte klausul som fjerner en L.

Deretter fortsetter vi å bestille etter stigende rekkefølge som definert i (ASC), som endrer strengen i form av

Helo -> ehlo

Til slutt utfører vi sammenkoblingsprosessen ved å bruke et rom som separator for de angitte verdiene, noe som resulterer i strengen e h l o fra h, e, l, l o.

Eksempel Bruk saker

La oss ta en ekte database og bruke den til å illustrere hvordan vi kan implementere Group_Concat () -funksjonen. I dette eksemplet vil vi bruke Sakila -databasen, og spesifikt adressetabellen fra Sakila -databasen.

Tenk på ressursen nedenfor for å laste ned databasen for eksemplene dine:

https: // dev.mysql.com/doc/indeks-annet.html

I adressetabellen til Sakila -databasen får du distriktskolonnen. Vi kan få alle de unike distriktene atskilt med et rør som vist i spørringen nedenfor:

Velg Group_Concat (Distinct District Order by District Separator "|") fra Sakila.Adressegrense 5;

Spørringen over vil vise alle de forskjellige distriktene og bestille dem i stigende rekkefølge atskilt med et rør.

MERK: Group_concat () -funksjonen er en samlet funksjon. Derfor kreves det at du spesifiserer ordren etter uttalelse i funksjonen og ikke i SELECT -setningen.

Konklusjon

Mysql group_concat () -funksjon diskutert i denne opplæringen er en nyttig funksjon som lar deg lage unike, sorterte og organiserte data fra en tabell som kan inneholde duplikater og uordnede data.

Tenk på dokumentene eller våre andre MySQL -opplæringsprogrammer for å lære mer.