MySQL Group Concat za strune

Mysql Group Concat Strings



GROUP _CONCAT funkcija je združena funkcija GROUP BY, ki vam omogoča združevanje vrednosti stolpcev iz več vrstic v eno polje. Vrne niz, če skupina niz vsebuje eno ali nič vrednosti ničelnega stolpca in vrne vrednost NULL, če nobene ni mogoče najti.

Ta vadnica vas bo naučila uporabljati funkcijo MySQL GROUP_CONCAT () za združevanje nizov iz skupine z več možnostmi.







Osnovna uporaba

Kot smo omenili, ta funkcija vrne rezultat niza z vrednostmi združenih vrednosti, ki niso ničelne, ali NULL, če ta ne obstaja.



Splošna sintaksa je:



GROUP_CONCAT ([ IZRAZIT ]ekspr[,izraz ...]
[ NAROČI PO ekspr
[ ASC | DESC ] [,col_name ...]]
[SEPARATOR str_val])

Pojasnilo

Iz zgornje sintakse lahko vidite, da funkcija GROUP_CONCAT uporablja stavke in omejitve MySQL za določanje različnih možnosti:





  1. IZRAZIT: Klavzula DISTINCT pomaga odstraniti podvojene vrednosti v skupini nastavitev pred postopkom združevanja. Razmislite o naši vadnici, ki pojasnjuje MySQL DISTINCT, da bi razumeli, kako deluje.
  2. NAROČI: Naslednji člen je ORDER BY, ki pomaga razvrstiti vrednosti v določenem vrstnem redu. Vrstni red je lahko naraščajoč ali padajoč. Če vrstni red ni podan, MySQL oblikuje vrednosti v naraščajočem vrstnem redu.
  3. LOČILEC : Ta klavzula nastavi literal niza med vrednostmi skupine med postopkom združevanja. MySQL privzeto uporablja vejice (,) za ločevanje vrednosti.

OPOMBA: Rezultatski niz, ki ga ustvari funkcija MySQL GROUP_CONCAT (), je omejen na dolžino vrednosti, nastavljene v spremenljivki group_concat_max_len. Ta vrednost je definirana v sistemu in ima privzeto vrednost 1024. To vrednost lahko spremenite globalno ali jo nastavite v seji, ki jo potrebujete.

SET [ GLOBALNO | SESIJA ]group_concat_max_len= vrednost ;

Če želite izvedeti več, upoštevajte spodnjo referenco:



https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_group_concat_max_len

Kako deluje: Primer

Dovolite mi, da na preprostem primeru razložim, kako deluje funkcija GROUP_CONCAT (). Tabelo s poljem za CHAR upoštevajte kot:

Ustvari TABELA concat ( vrednost CHAR );

V tabelo vstavimo vrednosti, kot je prikazano v spodnji poizvedbi:

VSTAVI INTO concat ( vrednost ) VREDNOTE ('H'),('IN'),('THE'),('THE'),('ALI');

Če izvedemo osnovno operacijo GROUP_CONCAT z vrednostmi v tabeli, bomo dobili rezultat niza, kot je prikazano spodaj:

IZBERI GROUP_CONCAT ( IZRAZIT vrednost NAROČI PO vrednost ASC LOČILEC'') IZ concat ;

Dobljena vrednost je:

+ ------------------------------------------------- -------------- +
| GROUP_CONCAT ( IZRAZIT vrednost NAROČI PO vrednost ASC LOČILEC'') |
+ ------------------------------------------------- -------------- +
|E H L O|
+ ------------------------------------------------- -------------- +
1vrstici v nastavljeno (0,01sek)

Ali želite na drug način razumeti, kaj se je zgodilo z zgornjim rezultatom?

Začnemo z odstranitvijo vseh podvojenih vrednosti zaradi klavzule MySQL DISTINCT, ki odstrani eno L.

Nato nadaljujemo na ORDER BY v naraščajočem vrstnem redu, kot je opredeljeno v (ASC), ki spremeni niz v obliki

POZDRAV->EHLO

Končno izvedemo postopek združevanja z uporabo presledka kot ločevalnika za nastavljene vrednosti, kar povzroči niz E H L O iz {H, E, L, L O}.

Primeri primerov uporabe

Vzemimo resnično bazo podatkov in z njo ponazorimo, kako lahko implementiramo funkcijo GROUP_CONCAT (). V tem primeru bomo uporabili zbirko podatkov Sakila, natančneje tabelo naslovov iz baze podatkov Sakila.

Za prenos primerov v zbirko podatkov preberite spodnji vir:

https://dev.mysql.com/doc/index-other.html

V tabeli naslovov baze podatkov Sakila boste dobili stolpec okrožja. Vse edinstvene okoliše lahko ločimo s pipo, kot je prikazano v spodnji poizvedbi:

IZBERI GROUP_CONCAT ( IZRAZIT okrožje NAROČI PO okraj SEPARATOR'|') IZ sakila.naslov OMEJITEV 5;

Zgornja poizvedba bo prikazala vsa okrožja DISTINCT in jih razvrstila po naraščajočem vrstnem redu, ločenih s črto.

OPOMBA: Funkcija GROUP_CONCAT () je združena funkcija. Zato je potrebno, da podate izraz ORDER BY znotraj funkcije in ne v stavku SELECT.

Zaključek

Funkcija MySQL GROUP_CONCAT (), obravnavana v tej vadnici, je uporabna funkcija, ki vam omogoča ustvarjanje edinstvenih, razvrščenih in organiziranih podatkov iz tabele, ki lahko vsebuje podvojene in neurejene podatke.

Če želite izvedeti več, si oglejte dokumente ali druge vaje MySQL.