MySQL Group Concat for Strings

Mysql Group Concat Strings



A GROUP _CONCAT függvény egy GROUP BY összesítő függvény, amely lehetővé teszi több oszlop oszlopértékeinek egyetlen mezőbe történő összekapcsolását. Visszaad egy karakterláncot, ha a halmazcsoport egy vagy nulla oszlopértéket tartalmaz, és NULL értéket ad vissza, ha nem található.

Ez az oktatóanyag megtanítja, hogyan használhatja a MySQL GROUP_CONCAT () függvényt, hogy több csoportból kombinálja a karakterláncokat.







Alapvető használat

Amint már említettük, ez a függvény egy karakterlánc eredményt ad vissza az összefűzött nem null értékekkel, vagy NULL értékkel, ha nincs ilyen.



Az általános szintaxis a következő:



GROUP_CONCAT ([ KÜLÖNBÖZŐ ]kifejezés[,kifejezés ...]
[ RENDEZÉS kifejezés
[ ASC | DESC ] [,oszlopnév ...]]
[SEPARATOR str_val])

Magyarázat

A fenti szintaxisból látható, hogy a GROUP_CONCAT függvény MySQL záradékokat és megszorításokat használ a különböző lehetőségek megadásához:





  1. KÜLÖNBÖZŐ: A DISTINCT záradék segít eltávolítani az ismétlődő értékeket a halmazcsoportból az összefűzési folyamat előtt. Tekintse meg bemutatónkat, amely elmagyarázza a MySQL DISTINCT -t, hogy megértsük, hogyan működik.
  2. RENDEZÉS: A következő záradék a ORDER BY, amely segít az értékek meghatározott sorrendben való rendezésében. A sorrend lehet növekvő vagy csökkenő. Ha nincs megadva sorrend, a MySQL növekvő sorrendben formázza az értékeket.
  3. SZÉTVÁLASZTÓ : Ez a záradék beállítja a karakterlánc -literált a csoport értékei közé illesztve az összefűzési folyamat során. Alapértelmezés szerint a MySQL vesszővel (,) választja el az értékeket.

JEGYZET: A MySQL GROUP_CONCAT () függvény által generált karakterlánc eredménye a group_concat_max_len változóban megadott értékre korlátozódik. Ezt az értéket a rendszer határozza meg, és alapértelmezett értéke 1024. Ezt az értéket globálisan módosíthatja, vagy beállíthatja a szükséges munkamenetben.

KÉSZLET [ GLOBÁLIS | ÜLÉS ]group_concat_max_len= érték ;

További információért vegye figyelembe az alábbi hivatkozást:



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

Hogyan működik: példa

Engedje meg, hogy egy egyszerű példával magyarázzam el a GROUP_CONCAT () függvény működését. Tekintsük a táblázatot CHAR mezővel:

TEREMT ASZTAL összefűzött ( érték CHAR );

Szúrjunk be értékeket a táblázatba az alábbi lekérdezés szerint:

INSERT BA összefűzött ( érték ) ÉRTÉKEK ('H'),('ÉS'),('AZ'),('AZ'),('VAGY');

Ha alapvető GROUP_CONCAT műveletet hajtunk végre a táblázat értékeivel, akkor az alább látható karakterlánc eredményt kapjuk:

SELECT GROUP_CONCAT ( KÜLÖNBÖZŐ érték RENDEZÉS érték ASC SZÉTVÁLASZTÓ'') TÓL TŐL összefűzött ;

A kapott érték:

+ ------------------------------------------------- -------------- +
| GROUP_CONCAT ( KÜLÖNBÖZŐ érték RENDEZÉS érték ASC SZÉTVÁLASZTÓ'') |
+ ------------------------------------------------- -------------- +
|E H L O|
+ ------------------------------------------------- -------------- +
1sor ban ben készlet (0,01mp)

Szeretne más módon megérteni, mi történt a fent megadott eredménnyel?

Kezdjük azzal, hogy eltávolítjuk az összes ismétlődő értéket az egyik L -et eltávolító MySQL DISTINCT záradék miatt.

Ezután folytatjuk a ORDER BY (ASC) szerinti növekvő sorrendet, amely megváltoztatja a karakterláncot

HELLÓ->EHLO

Végül elvégezzük az összefűzési folyamatot, egy szóközt használva a beállított értékek elválasztójaként, amelynek eredményeként az E H L O karakterláncot kapjuk a {H, E, L, L O} -ból.

Példa használati esetekre

Vegyünk egy valós adatbázist, és annak segítségével szemléltessük, hogyan tudjuk megvalósítani a GROUP_CONCAT () függvényt. Ebben a példában a Sakila adatbázist fogjuk használni, és különösen a Sakila adatbázis címtábláját.

Tekintse meg az alábbi forrást a példák adatbázisának letöltéséhez:

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

A Sakila adatbázis címtáblázatában megjelenik a kerület oszlop. Az összes egyedi kerületet csővel választhatjuk el az alábbi lekérdezés szerint:

SELECT GROUP_CONCAT ( KÜLÖNBÖZŐ kerület RENDEZÉS kerületi ELVÁLASZTÓ'|') TÓL TŐL sakila.cím HATÁR 5;

A fenti lekérdezés az összes DISTINCT körzetet megjeleníti, és csővel elválasztva növekvő sorrendbe rendezi őket.

JEGYZET: A GROUP_CONCAT () függvény összesített függvény. Ezért az ORDER BY utasítást a függvényen belül kell megadni, nem pedig a SELECT utasításban.

Következtetés

Az ebben az oktatóanyagban tárgyalt MySQL GROUP_CONCAT () függvény hasznos funkció, amely lehetővé teszi egyedi, rendezett és rendszerezett adatok létrehozását egy olyan táblázatból, amely másolatokat és rendezetlen adatokat tartalmazhat.

Tekintse meg a dokumentumokat vagy a többi MySQL oktatóanyagunkat, ha többet szeretne megtudni.