MySQL Group Concat for Strings

Mysql Group Concat Strings



GROUP _CONCAT -funktio on GROUP BY -koostetoiminto, jonka avulla voit yhdistää useiden rivien sarakearvot yhteen kenttään. Se palauttaa merkkijonon, jos joukko sisältää yhden tai ei-nolla-sarakkeen arvon, ja palauttaa NULL-arvon, jos mitään ei löydy.

Tämä opetusohjelma opettaa sinulle, miten voit käyttää MySQL GROUP_CONCAT () -toimintoa ryhmän merkkijonojen yhdistämiseen useisiin vaihtoehtoihin.







Peruskäyttö

Kuten olemme maininneet, tämä funktio palauttaa merkkijonotuloksen yhdistettyjen ei-nolla-arvojen arvoilla tai NULL-arvon, jos niitä ei ole.



Yleinen syntaksi on:



GROUP_CONCAT ([ DISTINCT ]lauseke[,lausunto ...]
[ TILAA lauseke
[ ASC | DESC ] [,col_name ...]]
[SEPARATOR str_val])

Selitys

Yllä olevasta syntaksista näet, että GROUP_CONCAT -toiminto käyttää MySQL -lausekkeita ja rajoituksia eri vaihtoehtojen määrittämiseen:





  1. DISTINCT: DISTINCT -lause auttaa poistamaan päällekkäiset arvot ryhmässä ennen ketjutusprosessia. Harkitse opetusohjelmaamme, jossa selitetään MySQL DISTINCT, jotta ymmärrät, miten se toimii.
  2. TILAA: Seuraava lauseke on ORDER BY, joka auttaa lajittelemaan arvot määritetyssä järjestyksessä. Järjestys voi olla nouseva tai laskeva. Jos järjestystä ei ole määritetty, MySQL muotoilee arvot nousevaan järjestykseen.
  3. EROTIN : Tämä lauseke asettaa merkkijonon, joka lisätään ryhmän arvojen välille ketjutusprosessissa. Oletuksena MySQL käyttää arvoja pilkulla (,).

HUOMAUTUS: Funktion MySQL GROUP_CONCAT () tuottama merkkijonotulos on rajoitettu pituuteen, jonka arvo on asetettu muuttujaan group_concat_max_len. Tämä arvo on määritelty järjestelmässä ja sen oletusarvo on 1024. Voit muuttaa tätä arvoa maailmanlaajuisesti tai asettaa sen tarvitsemassasi istunnossa.

ASETA [ GLOBAL | ISTUNTO ]group_concat_max_len= arvo ;

Harkitse alla olevaa viitettä saadaksesi lisätietoja:



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

Kuinka se toimii: Esimerkki

Sallikaa minun käyttää yksinkertaista esimerkkiä selittääkseni, miten GROUP_CONCAT () -toiminto toimii. Tarkastellaan taulukkoa, jossa on CHAR -kenttä seuraavasti:

LUODA PÖYTÄ ketju ( arvo HIILTYÄ );

Lisäämme taulukkoon arvot alla olevan kyselyn mukaisesti:

INSERT INTO ketju ( arvo ) ARVOT ('H'),('JA'),('THE'),('THE'),('TAI');

Jos suoritamme GROUP_CONCAT -perustoiminnon taulukon arvoille, saamme merkkijonotuloksen alla esitetyllä tavalla:

VALITSE GROUP_CONCAT ( DISTINCT arvo TILAA arvo ASC EROTIN'') ALK ketju ;

Tuloksena oleva arvo on:

+ ------------------------------------------------- -------------- +
| GROUP_CONCAT ( DISTINCT arvo TILAA arvo ASC EROTIN'') |
+ ------------------------------------------------- -------------- +
|E H L O|
+ ------------------------------------------------- -------------- +
1rivi sisään aseta (0,01sek)

Haluatko toisen tavan ymmärtää, mitä edellä annetulle tulokselle tapahtui?

Aloitamme poistamalla kaikki päällekkäiset arvot MySQL DISTINCT -lausekkeen vuoksi, joka poistaa yhden L.

Seuraavaksi siirrymme tilaukseen ASC (ASC) määritetyssä nousevassa järjestyksessä, joka muuttaa merkkijonon muodossa

HELO->EHLO

Lopuksi suoritamme ketjutusprosessin käyttämällä välilyöntiä asetettujen arvojen erottajana, jolloin tuloksena on merkkijono E H L O kohdista {H, E, L, L O}.

Esimerkkejä käyttötapauksista

Otetaan todellinen tietokanta ja käytetään sitä havainnollistamaan, kuinka voimme toteuttaa GROUP_CONCAT () -toiminnon. Tässä esimerkissä käytämme Sakila -tietokantaa ja erityisesti Sakila -tietokannan osoitetaulukkoa.

Harkitse alla olevaa resurssia ladataksesi tietokannan esimerkeillesi:

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

Sakila -tietokannan osoitetaulukosta saat piirin sarakkeen. Voimme saada kaikki ainutlaatuiset piirit erilleen putkella alla olevan kyselyn mukaisesti:

VALITSE GROUP_CONCAT ( DISTINCT kaupunginosa TILAA piirin SEPARATOR'|') ALK sakila.osoite RAJA 5;

Yllä oleva kysely näyttää kaikki DISTINCT -piirit ja järjestää ne nousevassa järjestyksessä putkella erotettuna.

HUOMAUTUS: Funktio GROUP_CONCAT () on koottu funktio. Siksi ORDER BY -lauseke on määritettävä funktion sisällä eikä SELECT -käskyssä.

Johtopäätös

Tässä opetusohjelmassa käsitelty MySQL GROUP_CONCAT () -toiminto on hyödyllinen toiminto, jonka avulla voit luoda ainutlaatuisia, lajiteltuja ja järjestettyjä tietoja taulukosta, joka voi sisältää päällekkäisyyksiä ja järjestämättömiä tietoja.

Tutustu asiakirjoihin tai muihin MySQL -opetusohjelmiin saadaksesi lisätietoja.