mysql concat group_concat functions with examples
V tej vadnici je razloženo, kako uporabljati MySQL CONCAT s funkcijami Select in GROUP_CONCAT s sintakso in primeri iz prakse:
CONCAT je funkcija String, ki jo podpira MySQL, da združi ali združi dva ali več nizov in jih vrne kot eno vrednost. Ime CONCAT izvira iz glagolskega povezovanja, kar pomeni združitev dveh ali več entitet.
V tej vadnici se bomo naučili uporabe CONCAT s primeri poizvedb in drugimi različicami funkcije CONCAT, ki jih ponuja MySQL.
Kaj se boste naučili:
Funkcija MySQL CONCAT
Sintaksa:
Sintaksa funkcije CONCAT je enostavna. Vsebuje samo seznam nizov, ločenih z vejicami, ki jih je treba združiti.
CONCAT(string1, string2, ------ stringN)
Vhodni in izhodni tip, ki jih pričakuje funkcija CONCAT, sta Strings. Tudi če ima številke, bo končni izhod String.
Na primer:
# 1) Z vhodnimi vrstami kot Strings.
SELECT CONCAT('string1', 'string2'); //Output string1string2
#two) Z vnosom kot številke / številke s plavajočo vejico.
SELECT CONCAT(1,2); //Output 12 SELECT CONCAT(1.1234,2); //Output 1.12342
Uporaba CONCAT z izjavami SELECT
CONCAT se najpogosteje uporablja poleg poizvedb SELECT, kjer lahko združi podatke iz dveh ali več stolpcev v en stolpec.
Klasičen primer je lahko recimo, da imamo tabelo, ki ima ločena stolpca za polji firstName in lastName. Recimo, da je med prikazom podatkov želja, da se prikaže FullName namesto firstName in lastName. Lahko uporabimo CONCAT in ustrezno prikažemo izbrane podatke.
Poglejmo to v akciji.
kako vrniti matriko iz metode v javi
Najprej ustvarite študentsko tabelo s polji - ID, ime, priimek, starost, datum rojstva in oddelek.
CREATE TABLE student (id INT PRIMARY KEY, fname VARCHAR(100), lname VARCHAR(100), age INT, dob DATE, department VARCHAR(100));
V tabelo vstavite nekaj lažnih podatkov.
INSERT INTO student values (1,'Darren', 'Still', 32, '1988-05-20', 'ENGINEERING'), (2,'Abhishek', 'Kumar', 28, '1992-05-20', 'ACCOUNTING'), (3,'Amit', 'Singh', 30, '1990-09-20', 'ENGINEERING'), (4,'Steven', 'Johnson', 40, '1980-05-21', 'HUMAN RESOURCES'), (5,'Kartik', 'Shamungam', 20, '2000-05-12', 'TRAINEE');
Zdaj napišite poizvedbo SELECT, da dobite polno ime kot združeni niz, ki združuje ime in priimek.
SELECT CONCAT(fname,lname) as fullName from student
// Izhod
polno ime |
---|
DarrenStill |
AbhishekKumar |
AmitSingh |
StevenJohnson |
KartikShamungam |
Kot lahko vidite v zgornjem izhodu, med imenom in priimkom ni razmika, zaradi česar je neberljiv. Razmik lahko dodamo s posodobitvijo funkcije CONCAT, da ima dodaten presledek kot niz, ki ga je treba združiti.
SELECT CONCAT(fname, ' ', lname) as fullName from student
To bi zagotovilo, da bi imeli z vsakim vnosom vmes dodaten razmik.
Uporaba CONCAT-a S SKUPINO
MySQL ponuja še eno funkcijo, imenovano GROUP_CONCAT.
Podobno je kot CONCAT, vendar se razlikuje po tem, da se CONCAT uporablja za kombiniranje vrednosti med stolpci, medtem ko se funkcija GROUP_CONCAT večinoma uporablja za združevanje vrednosti v vrsticah.
Sintaksa MySQL GROUP_CONCAT
SELECT col1, col2, ..., colN GROUP_CONCAT ( (DISTINCT) col_name1 (ORDER BY clause) (SEPARATOR str_val) ) FROM table_name GROUP BY col_name2;
Torej, v funkciji GROUP_CONCAT lahko vidite:
- ime_ col: To je stolpec, s katerim se želite združiti. Za izogibanje ponavljanju vrednosti obstaja neobvezna klavzula DISTINCT.
- NAROČITE PO: Stavek ORDER BY se uporablja za določanje vrstnega reda na združenem seznamu in ni obvezen.
- LOČILO: To je spet neobvezna klavzula, ki jo lahko uporabimo za določanje ločila po meri med združenimi vrednostmi. Ločilo je privzeto vejica (,).
Primeri MySQL GROUP_CONCAT
Recimo, da v zgornjem primeru študentske tabele želimo poiščite seznam povezanih oddelkov .
SELECT GROUP_CONCAT(department) as departments FROM student //Output ENGINEERING,ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEE
V zgornji poizvedbi
- Rezultat vsebuje ločen z vejicami seznam vseh oddelkov, ki so na voljo v stolpcu oddelkov.
- Obstajajo tudi ponavljajoče se vrednosti ( Na primer ENGINEERING), saj nismo določili klavzule DISTINCT.
Poskusimo isti primer s stavkom DISTINCT:
SELECT GROUP_CONCAT(DISTINCT department) as departments FROM student //Output ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEE
To bi samo vrnilo različne vrednosti stolpca oddelka.
Zdaj dodajte ločilo po meri kot ‘|’ in stavek ORDER BY, da bodo imena oddelkov razvrščena v naraščajočem vrstnem redu
SELECT GROUP_CONCAT(DISTINCT department separator ' | ') as departments FROM student //Output ACCOUNTING | ENGINEERING | HUMAN RESOURCES | TRAINEE
Torej, v zgornji poizvedbi,
- Imena oddelkov so razvrščena po naraščajočem vrstnem redu.
- Vrnejo se nobene ponavljajoče se vrednosti.
- Ločilo se spremeni iz ',' v '| ‘.
Pa poglejmo še en primer za naštevanje združenih vrednosti študentov na vsakem oddelku.
Tu ne bi želeli, da bi bili DISTINCT, saj imata dva študenta na oddelku isto ime.
SELECT department, GROUP_CONCAT(fname ORDER BY fname ASC SEPARATOR ' | ') AS students FROM student GROUP BY department
// Izhod
oddelek | študentov |
---|---|
RAČUNOVODSTVO | Abhišek |
INŽENIRING | Amit | Darren |
ČLOVEŠKI VIRI | Steven |
PRIPRAVNIK | Kartik |
Kombinacija CONCAT IN GROUP_CONCAT
Predpostavimo, da želimo v zgornjem primeru prikazati VKLJUČENE vrednosti imena in priimka skupaj z vsakim oddelkom.
Da bi to dosegli, lahko uporabimo CONCAT v ukazu GROUP_CONCAT.
Oglejmo si to v nadaljevanju:
SELECT department, GROUP_CONCAT(CONCAT(fname, ' ', lname) order by fname asc SEPARATOR ' | ') as students from student group by department
// Izhod
oddelek | študentov |
---|---|
RAČUNOVODSTVO | Abhishek kumar |
INŽENIRING | Amit Singh | Darren Still |
ČLOVEŠKI VIRI | Steven Johnson |
PRIPRAVNIK | Kartik shamungam |
Obravnavanje NULL vrednosti z CONCAT
CONCAT pričakuje argumente String in vrne izhod kot String.
Če je kateri koli vhod v funkcijo CONCAT NULL, bi bil tudi izhod NULL.
SELECT CONCAT('string1','string2', NULL); //Output NULL
Za obdelavo vrednosti NULL lahko uporabite funkcijo ifNull znotraj funkcije CONCAT, ki bi zagotovila privzeto ali prazno vrednost v primeru vrednosti NULL iz stolpca.
Recimo, da imamo za CONCAT 2 niza in 1 NULL vrednost, kot v zgornjem primeru.
SELECT CONCAT('string1','string2', ifNull(NULL,'hello')); //Output string1string2hello
V zgornjo poizvedbo smo dodali funkcijo ifNull, ki obdaja vrednost NULL (ali stolpec, ki bi lahko bil NULL) - če je ujemanje NULL uspešno, vrne ‘hello’ sicer dejansko vrednost stolpca.
Torej, v izhodu lahko vidite, da je za NULL niz natisnjen 'hello'.
Pogosto zastavljena vprašanja
V # 1) Kako združim stolpce v MySQL?
Odgovor: MySQL ponuja funkcijo CONCAT, ki združuje ali združuje 2 ali več stolpcev iz ene ali več tabel in vrne združene vrednosti v izhodu.
V # 2) Kje in kdaj moram uporabiti metodo concat v MySQL?
Odgovor: Metoda CONCAT se običajno uporablja za prikaz rezultatov poizvedbe, kjer želite združiti 2 ali več stolpcev in jih predstaviti kot en sam stolpec.
Na primer domnevamo, da imate tabelo, ki vsebuje ime in priimek kot ločena stolpca in ju želite prikazati kot eno celoto, imenovano polnoime - potem lahko s funkcijo CONCAT združite vrednosti stolpca z imenom in priimkom ter jih skupaj prikažete kot en sam stolpec.
V # 3) Kaj je MySQL GROUP_CONCAT?
Odgovor: Podobno kot CONCAT se tudi MySQL GROUP_CONCAT uporablja za združevanje vrednosti v tabeli. Tu je razlika med tem, ko se CONCAT uporablja za kombiniranje vrednosti v stolpcih, GROUP_CONCAT pa vam omogoča kombiniranje vrednosti med vrsticami.
Pomembno je tudi omeniti, da lahko tako GROUP_CONCAT kot CONCAT združite, da dobite želene rezultate.
GROUP_CONCAT se običajno uporablja v scenarijih, kjer bi želeli ZDRUŽITI ali združiti vrednosti v vrsticah. Na primer - imate tabelo izdelkov z imenom in kategorijo izdelka in želite vse izdelke določiti v določeno kategorijo kot vrednosti, ločene z vejico - potem lahko uporabite GROUP_CONCAT.
Poizvedba:
SELECT categoryName, GROUP_CONCAT(itemName) AS itemList FROM products GROUP BY categoryName
V # 4) Kako lahko z ukazom CONCAT določim ločilo?
Odgovor: S CONCAT lahko ločilo določite kot ločen niz, ki ga želite združiti.
Na primer: Recimo, da želite uporabiti '|' kot ločilo, nato pa lahko v ukazu CONCAT določite ta niz med imeni stolpcev, ki jih povezujete.
SELECT CONCAT(fname, '| ', lname) as fullName from student
V # 5) Kakšna je razlika med ukazoma CONCAT in CONCAT_WS?
Odgovor: CONCAT_WS je še ena različica CONCAT-a, ki jo ponuja MySQL in omogoča uporabniku, da določi ločilo za stolpce, ki se povezujejo.
To je boljše kot CONCAT v primerih, ko želite združiti večje število stolpcev in uporabiti isti ločilo za vse stolpce, ki so združeni.
Primer: Recimo, da obstaja študent tabele s polji - fname, lname in naslov.
Zdaj želimo združiti vsa ta tri polja in jih ločiti z '|'.
Uporaba CONCAT , ločilo moramo določiti kot ločen niz, ki ga bomo povezali.
SELECT CONCAT(fname, '|', lname, '|', address) as mergedColumn from student
Medtem ko z CONCAT_WS ločilo bi morali določiti samo enkrat.
SELECT CONCAT_WS('|', fname, lname, address) as mergedColumn from student
Zaključek
V tej vadnici smo spoznali funkcijo MySQL CONCAT in njeno uporabo. Ta funkcija je na splošno zelo koristna pri prikazu rezultatov poizvedb za združevanje vrednosti z različnimi stolpci.
Spoznali smo tudi dve različni različici funkcije CONCAT - ena združuje z ločevalnikom z uporabo CONCAT_WS in druga združuje vrednosti vrstic s funkcijo MySQL GROUP_CONCAT.
Priporočeno branje
- Vadnica za MySQL JOIN: Notranja, zunanja, križna, leva, desna in lastna
- MySQL UNION - izčrpna vadnica s primeri Unije
- Funkcije oblike in časovnega žiga MySQL z primeri
- MySQL Vstavi v tabelo - Vstavi sintakso in primere izjave
- Vadnica za izjavo o posodobitvi MySQL - Sintaksa in primeri posodobitve poizvedbe
- Vadnica za ustvarjanje pogleda MySQL s primeri kode
- Vadnica za funkcije / metode C # s primeri kode