mysql concat group_concat functions with examples
Ovaj vodič objašnjava kako koristiti MySQL CONCAT s funkcijama Select i GROUP_CONCAT sa sintaksom i praktični primjeri:
CONCAT je funkcija niza koju podržava MySQL za kombiniranje ili spajanje dviju ili više žica zajedno i vraćanje kao jednu vrijednost. Naziv CONCAT dolazi od glagola concatenation, što znači spajanje 2 ili više entiteta.
U ovom uputstvu naučit ćemo upotrebu CONCAT-a s primjerima upita i drugim varijacijama funkcije CONCAT koje pruža MySQL.
Što ćete naučiti:
MySQL CONCAT funkcija
Sintaksa:
Sintaksa funkcije CONCAT je izravna. Sadrži samo popis žica odvojenih zarezom koje treba spojiti.
CONCAT(string1, string2, ------ stringN)
I ulazne i izlazne vrste koje očekuje funkcija CONCAT su Strings. Čak i ako je isporučen s brojevima, konačni će izlaz biti String.
Na primjer:
# 1) S vrstama unosa kao Strings.
SELECT CONCAT('string1', 'string2'); //Output string1string2
#dva) S unosom kao brojevi / brojevi s pomičnom zarezom.
SELECT CONCAT(1,2); //Output 12 SELECT CONCAT(1.1234,2); //Output 1.12342
Korištenje CONCAT-a s SELECT izjavama
CONCAT se najčešće koristi zajedno s upitima SELECT, gdje može kombinirati podatke iz 2 ili više stupaca u jedan stupac.
Klasičan primjer može biti, pretpostavimo da imamo tablicu koja ima zasebne stupce za polja FirstName i lastName. Dakle, dok prikazujemo podatke, pretpostavimo da je želja prikazati Puno Ime umjesto Ime i Prezime. Možemo se koristiti CONCAT-om i u skladu s tim prikazati odabrane podatke.
Da vidimo ovo na djelu.
besplatni softver za pretvorbu video zapisa za Windows
Prvo stvorite studentsku tablicu s poljima - id, ime, prezime, dob, datum rođenja i odjel.
CREATE TABLE student (id INT PRIMARY KEY, fname VARCHAR(100), lname VARCHAR(100), age INT, dob DATE, department VARCHAR(100));
U tablicu umetnite neke lažne podatke.
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');
Sada napišite SELECT upit da biste dobili puno ime kao ujedinjeni niz koji kombinira ime i prezime.
SELECT CONCAT(fname,lname) as fullName from student
//Izlaz
puno ime |
---|
DarrenSvejedno |
AbhishekKumar |
AmitSingh |
StevenJohnson |
KartikShamungam |
Kao što vidite u gornjem izlazu, nema razmaka između imena i prezimena, što ga čini nečitkim. Razmak možemo dodati ažuriranjem funkcije CONCAT tako da ima dodatni razmak kao znak koji se spaja.
SELECT CONCAT(fname, ' ', lname) as fullName from student
To bi osiguralo da sa svakim unosom između njih imate dodatni razmak.
Korištenje CONCAT-a S GRUPOM
MySQL pruža još jednu funkciju koja se naziva GROUP_CONCAT.
Sličan je CONCAT-u, ali se razlikuje po načinu na koji se CONCAT koristi za kombiniranje vrijednosti u stupcima, dok se funkcija GROUP_CONCAT uglavnom koristi za spajanje vrijednosti kroz retke.
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;
Dakle, u funkciji GROUP_CONCAT možete vidjeti:
- ime_kola: Ovo je stupac s kojim se želite povezati. Postoji neobvezna klauzula DISTINCT kako bi se izbjeglo ponavljanje vrijednosti.
- NARUČITE PO: Klauzula ORDER BY koristi se za određivanje redoslijeda unutar ujedinjenog popisa i nije obavezna.
- SEPARATOR: Ovo je opet neobavezna klauzula koja se može koristiti za definiranje prilagođenog separatora između spojenih vrijednosti. Prema zadanim postavkama, zarez (,) je razdvajač.
Primjeri MySQL GROUP_CONCAT
Pretpostavimo da u gornjem primjeru studentske tablice želimo doznajte popis povezanih odjela .
SELECT GROUP_CONCAT(department) as departments FROM student //Output ENGINEERING,ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEE
U gornjem upitu,
- Izlaz sadrži popis odjela odvojenih zarezom koji su dostupni u stupcu odjela.
- Također, postoje ponavljajuće vrijednosti ( Na primjer, ENGINEERING) jer nismo naveli klauzulu DISTINCT.
Pokušajmo isti primjer s klauzulom DISTINCT:
SELECT GROUP_CONCAT(DISTINCT department) as departments FROM student //Output ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEE
To bi samo vratilo različite vrijednosti stupca odjela.
Sada dodajte prilagođeni separator kao ‘|’ i klauzulu ORDER BY da bi se nazivi odjela sortirali u uzlaznom redoslijedu
SELECT GROUP_CONCAT(DISTINCT department separator ' | ') as departments FROM student //Output ACCOUNTING | ENGINEERING | HUMAN RESOURCES | TRAINEE
Dakle, u gornjem upitu,
- Imena odjela sortirana su uzlaznim redoslijedom.
- Ne vraćaju se ponavljajuće vrijednosti.
- Razdjelnik se mijenja iz ',' u '| ‘.
Da vidimo još jedan primjer za nabrajanje spojenih vrijednosti učenika na svakom odjelu.
Ovdje ne bismo željeli kao RAZLIKU jer bi 2 studenta na odjelu mogli imati isto ime.
SELECT department, GROUP_CONCAT(fname ORDER BY fname ASC SEPARATOR ' | ') AS students FROM student GROUP BY department
// izlaz
odjel | studenti |
---|---|
RAČUNOVODSTVO | Abhishek |
INŽENJERING | Amit | Darren |
LJUDSKI RESURSI | Steven |
PRIPRAVNIK | Kartik |
Kombinirajući CONCAT I GROUP_CONCAT
U gornjem primjeru, pretpostavimo da želimo prikazati SAVJETOVANE vrijednosti imena i prezimena zajedno sa svakim odjelom.
Da bismo to postigli, možemo koristiti CONCAT unutar naredbe GROUP_CONCAT.
Pogledajmo ovo na djelu u nastavku:
SELECT department, GROUP_CONCAT(CONCAT(fname, ' ', lname) order by fname asc SEPARATOR ' | ') as students from student group by department
//Izlaz
odjel | studenti |
---|---|
RAČUNOVODSTVO | Abhishek kumar |
INŽENJERING | Amit Singh | Darren Still |
LJUDSKI RESURSI | Steven Johnson |
PRIPRAVNIK | Kartik shamungam |
Rukovanje NULL vrijednostima s CONCAT-om
CONCAT očekuje String argumente i vraća izlaz kao String.
Ako je bilo koji ulaz u funkciju CONCAT NULL, tada bi i izlaz bio NULL.
SELECT CONCAT('string1','string2', NULL); //Output NULL
Da biste obrađivali NULL vrijednosti, možete koristiti izraz ifNull unutar funkcije CONCAT koji bi osigurao zadanu ili praznu vrijednost u slučaju NULL vrijednosti iz stupca.
Pretpostavimo da imamo 2 niza i 1 NULL vrijednost za CONCAT, kao gornji primjer.
SELECT CONCAT('string1','string2', ifNull(NULL,'hello')); //Output string1string2hello
U gornji upit dodali smo funkciju ifNull koja okružuje vrijednost NULL (ili stupac koji bi mogao biti NULL) - ako je NULL podudaranje uspješno, tada bi se vratilo 'zdravo' u suprotnom stvarna vrijednost stupca.
Dakle, u izlazu možete vidjeti za NULL niz ispisano je ‘zdravo’.
Često postavljana pitanja
P # 1) Kako spojiti stupce u MySQL?
Odgovor: MySQL pruža funkciju CONCAT za kombiniranje ili spajanje 2 ili više stupaca iz jedne ili više tablica i vraćanje spojenih vrijednosti u izlaz.
P # 2) Gdje i kada moram koristiti metodu concat u MySQL?
Odgovor: CONCAT metoda se obično koristi protiv prikaza rezultata upita gdje biste željeli spojiti 2 ili više stupaca i predstaviti ih kao jedan stupac.
Na primjer, pretpostavimo da imate tablicu koja sadrži ime i prezime kao zasebne stupce i želite ih prikazati kao jednu cjelinu koja se zove puno ime - tada možete koristiti funkciju CONCAT za spajanje vrijednosti stupca imena i prezimena i njihovo prikazivanje zajedno kao jedan stupac.
P # 3) Što je MySQL GROUP_CONCAT?
Odgovor: Slično CONCAT-u, MySQL GROUP_CONCAT također se koristi za spajanje vrijednosti kroz tablicu. Ovdje je razlika u tome dok se CONCAT koristi za kombiniranje vrijednosti u stupcima, GROUP_CONCAT daje vam mogućnost kombiniranja vrijednosti u redovima.
Također je važno napomenuti da se i GROUP_CONCAT i CONCAT mogu kombinirati da bi se dobili željeni rezultati.
GROUP_CONCAT obično se koristi u scenarijima u kojima želite grupirati ili kombinirati vrijednosti u redovima. Na primjer - imate tablicu proizvoda s nazivom i kategorijom proizvoda i želite navesti sve proizvode prema datoj kategoriji kao vrijednosti odvojene zarezom - tada možete koristiti GROUP_CONCAT.
Upit:
SELECT categoryName, GROUP_CONCAT(itemName) AS itemList FROM products GROUP BY categoryName
P # 4) Kako mogu odrediti separator pomoću naredbe CONCAT?
Odgovor: Pomoću CONCAT-a možete odrediti separator kao zasebni niz koji se spaja.
Na primjer: Pretpostavimo da želite koristiti '|' kao separator, a zatim u naredbi CONCAT možete odrediti ovaj niz između imena stupaca koje spajate.
SELECT CONCAT(fname, '| ', lname) as fullName from student
P # 5) Koja je razlika između naredbi CONCAT i CONCAT_WS?
Odgovor: CONCAT_WS je još jedna varijacija CONCAT-a koju pruža MySQL, a koja omogućava korisniku da odredi separator za stupce koji se spajaju.
To se daje prednost CONCAT-u u situacijama kada želite spojiti veći broj stupaca i koristiti isti separator za sve stupce koji su povezani.
Primjer: Pretpostavimo da postoji student tablice s poljima - fname, lname i adresa.
Sada želimo spojiti sva ova tri polja i razdvojiti ih s '|'.
Koristeći KONKAT , moramo odrediti separator kao zasebni niz koji se spaja.
SELECT CONCAT(fname, '|', lname, '|', address) as mergedColumn from student
Dok je sa CONCAT_WS samo biste jednom trebali navesti separator.
SELECT CONCAT_WS('|', fname, lname, address) as mergedColumn from student
Zaključak
U ovom uputstvu naučili smo o funkciji MySQL CONCAT i njenoj upotrebi. Ova je funkcija općenito vrlo korisna pri prikazivanju rezultata upita za spajanje vrijednosti s različitim stupcima.
Također smo naučili o 2 različite varijacije funkcije CONCAT - jedna se spaja s separatorom pomoću CONCAT_WS, a druga spaja vrijednosti redaka pomoću funkcije MySQL GROUP_CONCAT.
Preporučena literatura
- MySQL JOIN Vodič: Unutarnji, vanjski, križni, lijevi, desni i ja
- MySQL UNION - sveobuhvatan vodič s primjerima sindikata
- Funkcije formata i vremenskog žiga MySQL s primjerima
- MySQL Umetni u tablicu - Umetni sintaksu i primjere izjave
- Vodič za izjavu o ažuriranju MySQL - Sintaksa upita i ažuriranje primjera
- MySQL Vodič za stvaranje pogleda s primjerima koda
- Vodič za funkcije # C / Metode s primjerima koda