mysql concat group_concat functions with examples
Acest tutorial explică modul de utilizare a MySQL CONCAT cu funcțiile Select și GROUP_CONCAT cu sintaxă și exemple practice:
CONCAT este o funcție String acceptată de MySQL pentru a combina sau uni două sau mai multe șiruri împreună și a reveni ca o singură valoare. Numele CONCAT provine de la verbul concatenare, ceea ce înseamnă unirea a 2 sau mai multe entități împreună.
În acest tutorial, vom învăța utilizarea CONCAT cu exemple de interogări și alte variante ale funcției CONCAT furnizate de MySQL.
Ce veți învăța:
Funcția MySQL CONCAT
Sintaxă:
Sintaxa funcției CONCAT este simplă. Conține doar o listă separată prin virgule a șirurilor de caractere care trebuie alăturate.
CONCAT(string1, string2, ------ stringN)
Atât tipurile de intrare, cât și cele de ieșire așteptate de funcția CONCAT sunt șiruri. Chiar dacă este furnizat cu numere, ieșirea finală va fi String.
De exemplu:
# 1) Cu tipuri de intrare ca Șiruri.
SELECT CONCAT('string1', 'string2'); //Output string1string2
#Două) Cu intrare ca numere / numere cu virgulă mobilă.
SELECT CONCAT(1,2); //Output 12 SELECT CONCAT(1.1234,2); //Output 1.12342
Utilizarea CONCAT cu instrucțiunile SELECT
CONCAT este cel mai utilizat pe lângă interogările SELECT, unde poate combina date din 2 sau mai multe coloane într-o singură coloană.
Un exemplu clasic poate fi, să presupunem că avem un tabel care are coloane separate pentru câmpurile prenume și prenume. Deci, în timp ce afișați date, să presupunem că este dorința de a afișa FullName în loc de prenume și prenume. Putem folosi CONCAT și afișăm datele selectate în consecință.
Să vedem acest lucru în acțiune.
cum se inițializează o matrice generică în java
Mai întâi, creați un tabel Student cu câmpuri - id, prenume, prenume, vârstă, data nașterii și departament.
CREATE TABLE student (id INT PRIMARY KEY, fname VARCHAR(100), lname VARCHAR(100), age INT, dob DATE, department VARCHAR(100));
Introduceți câteva date fictive în tabel.
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');
Acum, scrieți o interogare SELECT pentru a obține un nume complet ca un șir concatenat care combină numele și prenumele.
SELECT CONCAT(fname,lname) as fullName from student
// Ieșire
Numele complet |
---|
DarrenStill |
AbhishekKumar |
AmitSingh |
StevenJohnson |
KartikShamungam |
După cum puteți vedea în rezultatul de mai sus, nu există nicio distanță între prenume și prenume, ceea ce îl face ilizibil. Putem adăuga spațiu prin actualizarea funcției CONCAT pentru a avea un caracter de spațiu suplimentar ca șir care trebuie concatenat.
SELECT CONCAT(fname, ' ', lname) as fullName from student
Acest lucru ar asigura că, la fiecare intrare, veți avea spațiu suplimentar între ele.
Utilizarea CONCAT cu GROUP
MySQL oferă o altă funcție numită GROUP_CONCAT.
Este similar cu CONCAT, dar diferă prin modul în care CONCAT este utilizat pentru a combina valorile între coloane, în timp ce funcția GROUP_CONCAT este utilizată în principal pentru concatenarea valorilor pe rânduri.
Sintaxa 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;
Deci, în funcția GROUP_CONCAT, puteți vedea:
- col_name: Aceasta este coloana cu care doriți să concatenați. Există o clauză opțională DISTINCT pentru a evita repetarea valorilor.
- COMANDA DE: Clauza ORDER BY este utilizată pentru a specifica ordinea în lista concatenată și este opțională.
- SEPARATOR: Aceasta este din nou o clauză opțională care poate fi utilizată pentru a defini un separator personalizat între valorile concatenate. În mod implicit, virgula (,) este separatorul.
Exemple MySQL GROUP_CONCAT
În exemplul tabelului Student de mai sus, să presupunem că vrem aflați o listă de departamente concatenate .
SELECT GROUP_CONCAT(department) as departments FROM student //Output ENGINEERING,ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEE
În interogarea de mai sus,
- Ieșirea conține o listă separată prin virgule a tuturor departamentelor disponibile în coloana departamentului.
- De asemenea, există valori repetate ( De exemplu, INGINERIE) deoarece nu am specificat o clauză DISTINCT.
Să încercăm același exemplu cu clauza DISTINCT:
SELECT GROUP_CONCAT(DISTINCT department) as departments FROM student //Output ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEE
Acest lucru ar returna doar valorile distincte ale coloanei departamentului.
Acum adăugați un separator personalizat ca „|” și clauză ORDER BY pentru a avea numele departamentelor sortate în ordine crescătoare
SELECT GROUP_CONCAT(DISTINCT department separator ' | ') as departments FROM student //Output ACCOUNTING | ENGINEERING | HUMAN RESOURCES | TRAINEE
Deci, în interogarea de mai sus,
- Numele departamentelor sunt sortate în ordine crescătoare.
- Nu se returnează valori repetate.
- Separatorul este schimbat din ‘,’ în ‘| ‘.
Să vedem un alt exemplu de listare a valorilor concatenate ale elevilor din fiecare departament.
Aici nu ne-am dori la fel de DISTINCT, deoarece 2 studenți dintr-un departament ar putea avea același nume.
SELECT department, GROUP_CONCAT(fname ORDER BY fname ASC SEPARATOR ' | ') AS students FROM student GROUP BY department
// Ieșire
departament | elevi |
---|---|
CONTABILITATE | Abhishek |
INGINERIE | Amit | Darren |
RESURSE UMANE | Steven |
STAGIU | Kartik |
Combinând CONCAT și GROUP_CONCAT
În exemplul de mai sus, să presupunem că dorim să arătăm valorile CONCATENATE ale numelui și prenumelui împreună cu fiecare departament.
Pentru a realiza acest lucru, putem folosi CONCAT în cadrul comenzii GROUP_CONCAT.
Să vedem acest lucru în acțiune mai jos:
SELECT department, GROUP_CONCAT(CONCAT(fname, ' ', lname) order by fname asc SEPARATOR ' | ') as students from student group by department
// Ieșire
departament | elevi |
---|---|
CONTABILITATE | Abhishek kumar |
INGINERIE | Amit Singh | Darren Still |
RESURSE UMANE | Steven Johnson |
STAGIU | Kartik shamungam |
Gestionarea valorilor NULL cu CONCAT
CONCAT așteaptă argumente String și returnează rezultatul ca String.
Dacă orice intrare în funcția CONCAT este NULL, atunci ieșirea ar fi și NULL.
SELECT CONCAT('string1','string2', NULL); //Output NULL
Pentru a gestiona valorile NULL, puteți utiliza o instrucțiune ifNull în cadrul funcției CONCAT care ar asigura o valoare implicită sau necompletată în cazul valorii NULL din coloană.
Să presupunem că avem 2 șiruri și 1 valoare NULL la CONCAT, ca exemplul de mai sus.
SELECT CONCAT('string1','string2', ifNull(NULL,'hello')); //Output string1string2hello
În interogarea de mai sus, am adăugat o funcție ifNull care înconjoară valoarea NULL (sau o coloană care ar putea fi NULL) - dacă potrivirea NULL este reușită, atunci ar returna „hello” altfel valoarea coloanei reale.
Deci, în rezultat, puteți vedea pentru șirul NULL, se imprimă „salut”.
întrebări frecvente
Q # 1) Cum pot îmbina coloanele în MySQL?
Răspuns: MySQL oferă o funcție CONCAT pentru a combina sau îmbina 2 sau mai multe coloane dintr-unul sau mai multe tabele și pentru a returna valorile îmbinate în ieșire.
Q # 2) Unde și când trebuie să folosesc metoda concat în MySQL?
Răspuns: Metoda CONCAT este utilizată în general împotriva afișării rezultatelor interogării în care doriți să uniți 2 sau mai multe coloane și să le reprezentați ca o singură coloană.
De exemplu, să presupunem că aveți un tabel care conține prenumele și prenumele ca coloane separate și doriți să le afișați ca o singură entitate numită fullName - apoi puteți utiliza funcția CONCAT pentru a îmbina valorile coloanei prenumelui și prenumelui și a le afișa împreună ca o singură coloană.
Î # 3) Ce este MySQL GROUP_CONCAT?
Răspuns: Similar cu CONCAT, MySQL GROUP_CONCAT este, de asemenea, utilizat pentru concatenarea valorilor într-un tabel. Diferența este că CONCAT este utilizat pentru a combina valorile între coloane, GROUP_CONCAT vă oferă posibilitatea de a combina valorile între rânduri.
De asemenea, este important să rețineți că atât GROUP_CONCAT, cât și CONCAT pot fi combinate pentru a obține rezultatele dorite.
GROUP_CONCAT este utilizat în general în scenarii în care ați dori să grupați sau să combinați valori pe rânduri. De exemplu - aveți un tabel de produse cu numele și categoria produsului și doriți să listați toate produsele pentru o anumită categorie ca valori separate prin virgulă - apoi puteți utiliza GROUP_CONCAT.
Interogare:
SELECT categoryName, GROUP_CONCAT(itemName) AS itemList FROM products GROUP BY categoryName
Q # 4) Cum pot specifica un separator folosind comanda CONCAT?
Răspuns: Cu CONCAT, puteți specifica separatorul ca un șir separat care trebuie concatenat.
De exemplu: Să presupunem că doriți să utilizați ‘|’ ca separator, apoi în comanda CONCAT puteți specifica acest șir între numele coloanelor pe care le concetați.
SELECT CONCAT(fname, '| ', lname) as fullName from student
Q # 5) Care este diferența dintre comenzile CONCAT și CONCAT_WS?
Răspuns: CONCAT_WS este o altă variantă a CONCAT furnizată de MySQL, care permite utilizatorului să specifice un separator pentru coloanele care sunt concatenate.
Acest lucru este preferat față de CONCAT în situațiile în care doriți să îmbinați un număr mai mare de coloane și să utilizați același separator pentru toate coloanele care sunt concatenate.
Exemplu: Să presupunem că există un student de masă cu câmpuri - fname, lname și adresă.
Acum vrem să concatenăm toate aceste trei câmpuri și să le separăm prin „|”.
Folosind CONCAT , trebuie să specificăm separatorul ca un șir separat care trebuie concatenat.
SELECT CONCAT(fname, '|', lname, '|', address) as mergedColumn from student
În timp ce cu CONCAT_WS ar trebui doar să specificați separatorul o singură dată.
SELECT CONCAT_WS('|', fname, lname, address) as mergedColumn from student
Concluzie
În acest tutorial, am aflat despre funcția MySQL CONCAT și despre utilizarea acesteia. Această funcție este, în general, foarte utilă atunci când afișează rezultatele interogării pentru îmbinarea valorilor cu diferite coloane.
De asemenea, am aflat despre 2 variante diferite ale funcției CONCAT - una este concatenarea cu un separator folosind CONCAT_WS și alta concatenează valorile rândurilor folosind funcția MySQL GROUP_CONCAT.
Lectură recomandată
- MySQL JOIN Tutorial: interior, exterior, încrucișat, stânga, dreapta și sine
- MySQL UNION - Tutorial cuprinzător cu exemple de uniune
- Funcțiile MySQL Data Format și Timestamp cu exemple
- MySQL Insert Into Table - Inserați sintaxa declarațiilor și exemple
- Tutorial MySQL Update Statement - Actualizați sintaxa interogării și exemple
- Tutorial MySQL Create View cu exemple de cod
- C # Funcții / Metode Tutorial cu exemple de cod