MySQL Group Concat stringidele

Mysql Group Concat Strings



Funktsioon GROUP _CONCAT on liitfunktsioon GROUP BY, mis võimaldab ühendada veeruväärtused mitmelt realt ühele väljale. See tagastab stringi, kui komplektirühm sisaldab ühe või nullväärtusega veeru väärtust, ja tagastab NULL-väärtuse, kui seda ei leita.

See õpetus õpetab teile, kuidas kasutada funktsiooni MySQL GROUP_CONCAT () rühma stringide kombineerimiseks mitme valikuga.







Põhikasutus

Nagu oleme maininud, tagastab see funktsioon stringitulemuse koos ühendatud mitte-nullväärtuste väärtustega või NULL-i, kui neid pole.



Üldine süntaks on järgmine:



GROUP_CONCAT ([ DISTINCT ]väljend[,väljend ...]
[ TELLI väljend
[ ASC | DESC ] [,col_name ...]]
[SEPARATOR str_val])

Selgitus

Ülaltoodud süntaksist näete, et funktsioon GROUP_CONCAT kasutab MySQL -i klausleid ja piiranguid erinevate valikute määramiseks.





  1. DISTINCT: Klausel DISTINCT aitab eemaldada dubleeritud väärtused segarühmas enne liitmisprotsessi. Kaaluge meie õpetust, mis selgitab MySQL DISTINCT -i, et mõista, kuidas see toimib.
  2. TELLI: Järgmine klausel on ORDER BY, mis aitab väärtusi määratud järjekorras sortida. Järjekord võib olla kasvav või kahanev. Kui järjekorda pole määratud, vormindab MySQL väärtused kasvavas järjekorras.
  3. Eraldi : See klausel seab stringide literaali, mis lisatakse rühmitamise protsesside väärtuste vahele. Vaikimisi kasutab MySQL väärtuste eraldamiseks koma (,).

MÄRGE: Funktsiooni MySQL GROUP_CONCAT () genereeritud stringi tulemus on piiratud pikkusega, mis on määratud väärtuses group_concat_max_len. See väärtus on süsteemis määratletud ja selle vaikeväärtus on 1024. Saate seda väärtust globaalselt muuta või määrata vajaliku seansi jooksul.

SET [ GLOBAL | SESSION ]group_concat_max_len= väärtus ;

Lisateabe saamiseks kaaluge allolevat viidet:



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

Kuidas see toimib: näide

Lubage mul kasutada lihtsat näidet, et selgitada, kuidas funktsioon GROUP_CONCAT () toimib. Mõelge tabelile CHAR väljaga järgmiselt:

LOO TABEL konkat ( väärtus CHAR );

Lisame tabelisse väärtused, nagu on näidatud allolevas päringus:

SISESTA SISSE konkat ( väärtus ) VÄÄRTUSED ('H'),('JA'),('THE'),('THE'),('VÕI');

Kui teeme tabeli väärtustega põhilise GROUP_CONCAT toimingu, saame stringi tulemuse, nagu on näidatud allpool:

VALI GROUP_CONCAT ( DISTINCT väärtus TELLI väärtus ASC Eraldi'') Alates konkat ;

Saadud väärtus on:

+ ------------------------------------------------- -------------- +
| GROUP_CONCAT ( DISTINCT väärtus TELLI väärtus ASC Eraldi'') |
+ ------------------------------------------------- -------------- +
|E H L O|
+ ------------------------------------------------- -------------- +
1rida sisse seatud (0,01sek)

Kas soovite teist viisi mõista, mis juhtus ülaltoodud tulemusega?

Alustuseks eemaldame kõik dubleerivad väärtused tänu MySQL DISTINCT klauslile, mis eemaldab ühe L.

Järgmisena liigume järjestusse TELLIMINE kasvavas järjekorras, nagu on määratletud (ASC), mis muudab stringi kujul

HELO->EHLO

Lõpuks teostame liitmisprotsessi, kasutades määratud väärtuste eraldajana tühikut, mille tulemuseks on string E H L O {H, E, L, L O}.

Kasutusjuhtumite näited

Võtame tõelise andmebaasi ja illustreerime seda, kuidas saame rakendada funktsiooni GROUP_CONCAT (). Selles näites kasutame Sakila andmebaasi ja täpsemalt Sakila andmebaasi aadressitabelit.

Näidete andmebaasi allalaadimiseks kaaluge alltoodud ressurssi:

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

Sakila andmebaasi aadressitabelis saate veeru linnaosa. Me saame kõik unikaalsed linnaosad toruga eraldada, nagu on näidatud allolevas päringus:

VALI GROUP_CONCAT ( DISTINCT linnaosa TELLI linnaosa SEPARATOR'|') Alates sakila.aadress PIIRANG 5;

Ülaltoodud päring kuvab kõik DISTINCT linnaosad ja järjestab need kasvavas järjekorras toruga eraldatuna.

MÄRGE: Funktsioon GROUP_CONCAT () on koondfunktsioon. Seetõttu peate funktsiooni ORDER BY määrama funktsiooni sees, mitte lauses SELECT.

Järeldus

Selles õpetuses käsitletud funktsioon MySQL GROUP_CONCAT () on kasulik funktsioon, mis võimaldab teil luua kordumatuid, sorteeritud ja organiseeritud andmeid tabelist, mis võib sisaldada duplikaate ja tellimata andmeid.

Lisateabe saamiseks kaaluge dokumente või meie muid MySQL -i õpetusi.