Skupina MySQL Concat pre reťazce

Mysql Group Concat Strings



Funkcia GROUP _CONCAT je agregačná funkcia GROUP BY, ktorá vám umožňuje spojiť hodnoty stĺpcov z viacerých riadkov do jedného poľa. Vráti reťazec, ak skupina množín obsahuje jednu alebo žiadnu hodnotu stĺpca a vráti hodnotu NULL, ak sa žiadna nenájde.

Tento tutoriál vás naučí používať funkciu MySQL GROUP_CONCAT () na kombináciu reťazcov zo skupiny s niekoľkými možnosťami.







Základné použitie

Ako sme už spomenuli, táto funkcia vracia reťazcový výsledok s hodnotami zreťazených nenulových hodnôt alebo NULL, ak žiadne neexistujú.



Všeobecná syntax je:



GROUP_CONCAT ([ ODLIŠNÝ ]expr[,expr ...]
[ ZORADIŤ PODĽA expr
[ ASC | DESC ] [,col_name ...]]
[SEPARATOR str_val])

Vysvetlenie

Z vyššie uvedenej syntaxe vidíte, že funkcia GROUP_CONCAT používa klauzuly a obmedzenia MySQL na zadanie rôznych možností:





  1. ODLIŠNÝ: Klauzula DISTINCT pomáha odstrániť duplicitné hodnoty v nastavenej skupine pred procesom zreťazenia. Zvážte náš návod, ktorý vysvetľuje MySQL DISTINCT, aby ste pochopili, ako funguje.
  2. ZORADIŤ PODĽA: Ďalšou klauzulou je OBJEDNAŤ BY, ktorá pomáha zoradiť hodnoty v určenom poradí. Poradie môže byť vzostupné alebo zostupné. Ak nie je zadané žiadne poradie, MySQL formátuje hodnoty vzostupne.
  3. SEPARÁTOR : Táto klauzula nastavuje doslovný reťazec vložený medzi hodnoty skupiny pri procese zreťazenia. MySQL štandardne používa na oddelenie hodnôt čiarku (,).

POZNÁMKA: Výsledok reťazca generovaný funkciou MySQL GROUP_CONCAT () je obmedzený na dĺžku nastavenú v premennej group_concat_max_len. Táto hodnota je definovaná v systéme a má predvolenú hodnotu 1024. Túto hodnotu môžete zmeniť globálne alebo ju nastaviť v relácii, ktorú potrebujete.

NASTAVIŤ [ GLOBÁLNY | ZASADNUTIE ]group_concat_max_len= hodnotu ;

Ak sa chcete dozvedieť viac, zvážte nižšie uvedenú referenciu:



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

Ako to funguje: Príklad

Dovoľte mi na jednoduchom príklade vysvetliť, ako funguje funkcia GROUP_CONCAT (). Tabuľku s poľom pre CHAR považujte za:

VYTVORIŤ TABUĽKA concat ( hodnotu CHAR );

Vložme hodnoty do tabuľky podľa nižšie uvedeného dopytu:

VLOŽIŤ DO concat ( hodnotu ) HODNOTY ('H'),(„A“),('THE'),('THE'),(„ALEBO“);

Ak vykonáme základnú operáciu GROUP_CONCAT s hodnotami v tabuľke, dostaneme reťazcový výsledok, ako je uvedené nižšie:

VYBERTE GROUP_CONCAT ( ODLIŠNÝ hodnotu ZORADIŤ PODĽA hodnotu ASC SEPARÁTOR'') OD concat ;

Výsledná hodnota je:

+ ------------------------------------------------- -------------- +
| GROUP_CONCAT ( ODLIŠNÝ hodnotu ZORADIŤ PODĽA hodnotu ASC SEPARÁTOR'') |
+ ------------------------------------------------- -------------- +
|E H L O|
+ ------------------------------------------------- -------------- +
1riadok v nastaviť (0,01sek)

Chcete iný spôsob, ako porozumieť tomu, čo sa stalo s vyššie uvedeným výsledkom?

Začneme odstránením všetkých duplicitných hodnôt kvôli klauzule MySQL DISTINCT, ktorá odstráni jednu L.

Ďalej pristúpime k OBJEDNÁVKE vzostupne podľa definície v (ASC), ktorá zmení reťazec vo forme

AHOJ->EHLO

Nakoniec vykonáme proces zreťazenia pomocou medzery ako oddeľovača nastavených hodnôt, výsledkom čoho je reťazec E H L O z {H, E, L, L O}.

Príklad prípadov použitia

Vezmime si skutočnú databázu a použijeme ju na ilustráciu toho, ako môžeme implementovať funkciu GROUP_CONCAT (). V tomto prípade použijeme databázu Sakila a konkrétne tabuľku adries z databázy Sakila.

Na stiahnutie databázy pre svoje príklady použite nasledujúci zdroj:

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

V tabuľke adries databázy Sakila získate stĺpček okres. Všetky jedinečné okresy môžeme oddeliť potrubím, ako je uvedené v nižšie uvedenom dopyte:

VYBERTE GROUP_CONCAT ( ODLIŠNÝ okres ZORADIŤ PODĽA okres SEPARÁTOR'|') OD sakila.adresa LIMIT 5;

Dotaz uvedený vyššie zobrazí všetky okresy DISTINCT a zoradí ich vo vzostupnom poradí oddelené potrubím.

POZNÁMKA: Funkcia GROUP_CONCAT () je súhrnná funkcia. Preto je potrebné, aby ste zadali príkaz ORDER BY vo funkcii, a nie v príkaze SELECT.

Záver

Funkcia MySQL GROUP_CONCAT () diskutovaná v tomto návode je užitočná funkcia, ktorá vám umožňuje vytvárať jedinečné, triedené a organizované údaje z tabuľky, ktorá môže obsahovať duplikáty a neusporiadané údaje.

Ak sa chcete dozvedieť viac, pozrite sa na dokumenty alebo naše ďalšie návody na MySQL.