mysql concat group_concat functions with examples
Denne opplæringen forklarer hvordan du bruker MySQL CONCAT med Select- og GROUP_CONCAT-funksjoner med syntaks og praktiske eksempler:
CONCAT er en strengfunksjon støttet av MySQL for å kombinere eller slå sammen to eller flere strenger sammen og returnere som en enkelt verdi. Navnet CONCAT kommer fra verbsammenslåingen, som betyr å knytte to eller flere enheter sammen.
I denne opplæringen vil vi lære bruken av CONCAT med spørreeksempler og andre varianter av CONCAT-funksjonen levert av MySQL.
Hva du vil lære:
MySQL CONCAT-funksjon
Syntaks:
Syntaksen til CONCAT-funksjonen er grei. Den inneholder bare en komma-separert liste over strengene som må settes sammen.
CONCAT(string1, string2, ------ stringN)
Både inngangs- og utgangstypene som CONCAT-funksjonen forventer er strenger. Selv om den leveres med tall, blir den endelige utgangen String.
For eksempel:
#1) Med inngangstyper som Strenger.
SELECT CONCAT('string1', 'string2'); //Output string1string2
#to) Med inndata som tall / flytende tall.
SELECT CONCAT(1,2); //Output 12 SELECT CONCAT(1.1234,2); //Output 1.12342
Bruke CONCAT med SELECT-utsagn
CONCAT er mest brukt sammen med SELECT-spørsmålene, der den kan kombinere data fra to eller flere kolonner i en enkelt kolonne.
Et klassisk eksempel kan være, anta at vi har en tabell som har separate kolonner for felt fornavn og etternavn. Så mens du viser data, anta at det er ønsket om å vise Fullnavn i stedet for fornavn og etternavn. Vi kan bruke CONCAT og vise de valgte dataene deretter.
La oss se dette i aksjon.
konvertere flere youtube-videoer til mp3
Opprett først en studenttabell med felt - id, fornavn, etternavn, alder, fødselsdato og avdeling.
CREATE TABLE student (id INT PRIMARY KEY, fname VARCHAR(100), lname VARCHAR(100), age INT, dob DATE, department VARCHAR(100));
Sett inn noen dummy-data i tabellen.
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');
Skriv nå et SELECT-spørsmål for å få et fullt navn som en sammenkoblet streng som kombinerer fornavn og etternavn.
SELECT CONCAT(fname,lname) as fullName from student
//Produksjon
fullt navn |
---|
DarrenStill |
AbhishekKumar |
AmitSingh |
StevenJohnson |
KartikShamungam |
Som du kan se i utdataene ovenfor, er det ingen avstand mellom fornavn og etternavn, noe som gjør det uleselig. Vi kan legge til avstand ved å oppdatere CONCAT-funksjonen for å ha et ekstra mellomromstegn som en streng som skal sammenkobles.
SELECT CONCAT(fname, ' ', lname) as fullName from student
Dette vil sikre at du vil ha ekstra mellomrom for hver oppføring.
Bruke CONCAT With GROUP
MySQL gir en annen funksjon kalt GROUP_CONCAT.
Det ligner på CONCAT, men det skiller seg ut på samme måte som CONCAT brukes til å kombinere verdier på tvers av kolonner, mens GROUP_CONCAT-funksjonen for det meste brukes til å sammenkoble verdier på tvers av rader.
MySQL GROUP_CONCAT Syntaks
SELECT col1, col2, ..., colN GROUP_CONCAT ( [DISTINCT] col_name1 [ORDER BY clause] [SEPARATOR str_val] ) FROM table_name GROUP BY col_name2;
Så i GROUP_CONCAT-funksjonen kan du se:
- kol.navn: Dette er kolonnen du vil sammenkoble. Det er en valgfri DISTINCT-klausul for å unngå å gjenta verdier.
- REKKEFØLGE ETTER: ORDER BY-setningen brukes til å spesifisere rekkefølgen i den sammenhengende listen og er valgfri.
- SEPARATOR: Dette er igjen en valgfri klausul som kan brukes til å definere en tilpasset skilletegn mellom de sammenkoblede verdiene. Som standard er komma (,) skilletegn.
MySQL GROUP_CONCAT Eksempler
Anta at vi vil i studenttabelleksemplet ovenfor finn ut en liste over sammenhengende avdelinger .
SELECT GROUP_CONCAT(department) as departments FROM student //Output ENGINEERING,ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEE
I spørringen ovenfor,
- Utgangen inneholder en kommaadskilt liste over alle avdelingene som er tilgjengelige i avdelingskolonnen.
- Det er også gjentatte verdier ( For eksempel, ENGINEERING) da vi ikke har spesifisert en DISTINCT-klausul.
La oss prøve det samme eksemplet med DISTINCT-setningen:
SELECT GROUP_CONCAT(DISTINCT department) as departments FROM student //Output ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEE
Dette vil bare returnere de forskjellige verdiene i avdelingskolonnen.
Legg nå til en egendefinert skilletegn som ‘|’ og ORDER BY-ledd for å få avdelingsnavn sortert i stigende rekkefølge
SELECT GROUP_CONCAT(DISTINCT department separator ' | ') as departments FROM student //Output ACCOUNTING | ENGINEERING | HUMAN RESOURCES | TRAINEE
Så i spørringen ovenfor,
- Avdelingsnavn sorteres i stigende rekkefølge.
- Ingen gjentatte verdier returneres.
- Separatoren endres fra ‘,’ til ‘| ‘.
La oss se et annet eksempel for å liste opp sammenkoblede verdier til studenter i hver avdeling.
Her vil vi ikke ha så DISTINCT som to studenter i en avdeling kan ha samme navn.
SELECT department, GROUP_CONCAT(fname ORDER BY fname ASC SEPARATOR ' | ') AS students FROM student GROUP BY department
// Utgang
avdeling | studenter |
---|---|
REGNSKAP | Abhishek |
ENGINEERING | Amit | Darren |
MENNESKELIGE RESSURSER | Steven |
LÆRLING | Kartik |
Kombinere CONCAT og GROUP_CONCAT
I det ovennevnte eksemplet, anta at vi vil vise de CONCATENATED verdiene for navn og etternavn sammen med hver avdeling.
For å oppnå dette kan vi bruke CONCAT i GROUP_CONCAT-kommandoen.
La oss se dette i aksjon nedenfor:
SELECT department, GROUP_CONCAT(CONCAT(fname, ' ', lname) order by fname asc SEPARATOR ' | ') as students from student group by department
//Produksjon
avdeling | studenter |
---|---|
REGNSKAP | Abhishek kumar |
ENGINEERING | Amit Singh | Darren Still |
MENNESKELIGE RESSURSER | Steven Johnson |
LÆRLING | Kartik shamungam |
Håndtering av NULL-verdier med CONCAT
CONCAT forventer strengargumenter og returnerer utdataene som streng.
Hvis noen innganger til CONCAT-funksjonen er NULL, vil utgangen også være NULL.
SELECT CONCAT('string1','string2', NULL); //Output NULL
For å håndtere NULL-verdier, kan du bruke en ifNull-setning i CONCAT-funksjonen som vil sikre en standard- eller blank verdi i tilfelle NULL-verdien fra kolonnen.
Anta at vi har 2 strenger og 1 NULL-verdi til CONCAT, som eksemplet ovenfor.
SELECT CONCAT('string1','string2', ifNull(NULL,'hello')); //Output string1string2hello
I spørringen ovenfor har vi lagt til en ifNull-funksjon som omgir NULL-verdien (eller en kolonne som kan være NULL) - hvis NULL-matchen er vellykket, vil den returnere 'hei' ellers den faktiske kolonneverdien.
Så i utgangen kan du se for NULL-strengen, 'hallo' skrives ut.
ofte stilte spørsmål
Sp # 1) Hvordan slår jeg sammen kolonner i MySQL?
Svar: MySQL gir en CONCAT-funksjon for å kombinere eller slå sammen 2 eller flere kolonner fra en eller flere tabeller og returnere de sammenslåtte verdiene i utdataene.
Q # 2) Hvor og når må jeg bruke concat-metoden i MySQL?
Svar: CONCAT-metoden brukes vanligvis mot visning av søkeresultater der du ønsker å bli med i to eller flere kolonner og representere dem som en enkelt kolonne.
For eksempel, antar at du har en tabell som inneholder fornavnet og etternavnet som separate kolonner, og at du vil vise dem som en enkelt enhet som heter fullnavn - så kan du bruke CONCAT-funksjonen til å slå sammen verdiene til fornavn og etternavn kolonne og vise dem sammen som en enkelt kolonne.
Spørsmål 3) Hva er MySQL GROUP_CONCAT?
Svar: I likhet med CONCAT brukes MySQL GROUP_CONCAT også til å sammenkoble verdier over en tabell. Forskjellen her er mens CONCAT brukes til å kombinere verdier på tvers av kolonner, gir GROUP_CONCAT deg muligheten til å kombinere verdier på tvers av rader.
Det er også viktig å merke seg at både GROUP_CONCAT og CONCAT kan kombineres for å gi ønsket resultat.
GROUP_CONCAT brukes vanligvis i scenarier der du ønsker å GROUP eller kombinere verdier på tvers av rader. For eksempel - du har en produkttabell med produktnavn og kategori, og du vil liste opp alle produktene mot en gitt kategori som komma-atskilte verdier - så kan du bruke GROUP_CONCAT.
Spørsmål:
SELECT categoryName, GROUP_CONCAT(itemName) AS itemList FROM products GROUP BY categoryName
Q # 4) Hvordan kan jeg spesifisere en skilletegn ved hjelp av CONCAT-kommandoen?
Svar: Med CONCAT kan du angi separator som en egen streng som skal sammenkobles.
For eksempel: Anta at du vil bruke ‘|’ som skilletegn, og i CONCAT-kommandoen kan du spesifisere denne strengen mellom kolonnenavnene du sammenkobler.
SELECT CONCAT(fname, '| ', lname) as fullName from student
Q # 5) Hva er forskjellen mellom CONCAT og CONCAT_WS kommandoer?
Svar: CONCAT_WS er en annen variant av CONCAT levert av MySQL, som gjør det mulig for en bruker å spesifisere en skilletegn for kolonnene som blir sammenkoblet.
Dette foretrekkes fremfor CONCAT i situasjoner der du vil slå sammen flere antall kolonner og bruke samme skilletegn for alle kolonnene som er sammenkoblet.
Eksempel: Anta at det er en bordstudent med felt - fname, lname og adresse.
Nå ønsker vi å sammenkoble alle disse tre feltene og skille med ‘|’.
Ved hjelp av CONCAT , må vi spesifisere skilletegn som en egen streng som skal sammenkobles.
SELECT CONCAT(fname, '|', lname, '|', address) as mergedColumn from student
Mens med CONCAT_WS du trenger bare å spesifisere skilletegn en gang.
SELECT CONCAT_WS('|', fname, lname, address) as mergedColumn from student
Konklusjon
I denne opplæringen lærte vi om MySQL CONCAT-funksjonen og bruken av den. Denne funksjonen er vanligvis veldig nyttig når du viser søkeresultater for å slå sammen verdier mot forskjellige kolonner.
Vi lærte også om to forskjellige varianter av CONCAT-funksjonen - en sammenkobles med en skilletegn ved bruk av CONCAT_WS, og en annen sammenkobler verdier av rader ved hjelp av MySQL GROUP_CONCAT-funksjonen.
Anbefalt lesing
- MySQL JOIN Opplæring: indre, ytre, kryss, venstre, høyre og selv
- MySQL UNION - Omfattende opplæring med fageksempler
- MySQL datoformat og tidsstempelfunksjoner med eksempler
- MySQL Sett inn i tabellen - Sett inn uttalelsessyntaks og eksempler
- MySQL Update Statement Tutorial - Update Query Syntax & Eksempler
- MySQL Lag visningsveiledning med kodeeksempler
- C # Funksjoner / Metoder Opplæring med kodeeksempler