MySQL Group Concat pro řetězce

Mysql Group Concat Strings



Funkce GROUP _CONCAT je agregační funkce GROUP BY, která vám umožňuje spojit hodnoty sloupců z více řádků do jednoho pole. Pokud nastavená skupina obsahuje jednu nebo žádnou hodnotu sloupce, vrátí řetězec a vrátí hodnotu NULL, pokud žádnou nelze najít.

Tento tutoriál vás naučí používat funkci MySQL GROUP_CONCAT () ke kombinování řetězců ze skupiny s několika možnostmi.







Základní použití

Jak jsme zmínili, tato funkce vrací výsledek řetězce s hodnotami zřetězených hodnot, které nemají hodnotu null, nebo NULL, pokud žádná neexistuje.



Obecná syntaxe je:



GROUP_CONCAT ([ ODLIŠNÝ ]expr[,expr ...]
[ SEŘADIT PODLE expr
[ ASC | DESC ] [,název_sbírky ...]]
[SEPARATOR str_val])

Vysvětlení

Z výše uvedené syntaxe vidíte, že funkce GROUP_CONCAT používá klauzule a omezení MySQL k určení různých možností:





  1. ODLIŠNÝ: Klauzule DISTINCT pomáhá odstranit duplicitní hodnoty v nastavené skupině před procesem zřetězení. Zvažte náš návod vysvětlující MySQL DISTINCT, abyste pochopili, jak to funguje.
  2. SEŘADIT PODLE: Další klauzule je ORDER BY, která pomáhá třídit hodnoty v zadaném pořadí. Pořadí může být buď vzestupné nebo sestupné. Pokud není zadáno žádné pořadí, MySQL formátuje hodnoty ve vzestupném pořadí.
  3. ODDĚLOVAČ : Tato klauzule nastavuje doslovný řetězec vložený mezi hodnoty skupiny při procesu zřetězení. Ve výchozím nastavení používá MySQL k oddělení hodnot čárku (,).

POZNÁMKA: Výsledek řetězce generovaný funkcí MySQL GROUP_CONCAT () je omezen na délku nastavenou v proměnné group_concat_max_len. Tato hodnota je definována v systému a má výchozí hodnotu 1024. Tuto hodnotu můžete změnit globálně nebo ji nastavit v relaci, kterou potřebujete.

SOUBOR [ GLOBÁLNÍ | ZASEDÁNÍ ]group_concat_max_len= hodnota ;

Chcete -li se dozvědět více, zvažte níže uvedenou referenci:



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

Jak to funguje: Příklad

Dovolte mi na jednoduchém příkladu vysvětlit, jak funguje funkce GROUP_CONCAT (). Zvažte tabulku s polem pro CHAR jako:

VYTVOŘIT STŮL concat ( hodnota CHAR );

Vložíme hodnoty do tabulky, jak ukazuje následující dotaz:

VLOŽIT DO concat ( hodnota ) HODNOTY ('H'),('A'),('THE'),('THE'),('NEBO');

Pokud provedeme základní operaci GROUP_CONCAT s hodnotami v tabulce, dostaneme výsledek řetězce, jak je uvedeno níže:

VYBRAT GROUP_CONCAT ( ODLIŠNÝ hodnota SEŘADIT PODLE hodnota ASC ODDĚLOVAČ'') Z concat ;

Výsledná hodnota je:

+ ------------------------------------------------- -------------- +
| GROUP_CONCAT ( ODLIŠNÝ hodnota SEŘADIT PODLE hodnota ASC ODDĚLOVAČ'') |
+ ------------------------------------------------- -------------- +
|E H L O|
+ ------------------------------------------------- -------------- +
1řádek v soubor (0,01sek)

Chcete jiný způsob, jak porozumět tomu, co se stalo s výše uvedeným výsledkem?

Začneme odstraněním všech duplicitních hodnot kvůli klauzuli MySQL DISTINCT, která odstraní jeden L.

Dále pokračujeme k OBJEDNÁVÁNÍ vzestupně podle definice v (ASC), která mění řetězec ve formě

AHOJ->EHLO

Nakonec provedeme proces zřetězení pomocí mezery jako oddělovače nastavených hodnot, což má za následek řetězec E H L O z {H, E, L, L O}.

Příklad použití případů

Vezměme si skutečnou databázi a použijte ji k ilustraci, jak můžeme implementovat funkci GROUP_CONCAT (). V tomto příkladu použijeme databázi Sakila a konkrétně tabulku adres z databáze Sakila.

Chcete -li stáhnout databázi pro své příklady, zvažte níže uvedený zdroj:

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

V tabulce adres v databázi Sakila získáte sloupec okresu. Můžeme získat všechny jedinečné okresy oddělené potrubím, jak ukazuje níže uvedený dotaz:

VYBRAT GROUP_CONCAT ( ODLIŠNÝ okres SEŘADIT PODLE okresní SEPARÁTOR'|') Z sakila. adresa OMEZIT 5;

Výše uvedený dotaz zobrazí všechny oblasti DISTINCT a uspořádá je ve vzestupném pořadí oddělených rourou.

POZNÁMKA: Funkce GROUP_CONCAT () je agregační funkcí. Proto je nutné zadat příkaz ORDER BY uvnitř funkce a ne v příkazu SELECT.

Závěr

Funkce MySQL GROUP_CONCAT () popsaná v tomto kurzu je užitečná funkce, která vám umožňuje vytvářet jedinečná, tříděná a organizovaná data z tabulky, která může obsahovat duplikáty a neuspořádaná data.

Chcete -li se dozvědět více, zvažte dokumenty nebo naše další výukové programy pro MySQL.