mysql concat group_concat functions with examples
Deze tutorial legt uit hoe je MySQL CONCAT gebruikt met Select en GROUP_CONCAT-functies met syntaxis en praktische voorbeelden:
CONCAT is een String-functie die wordt ondersteund door MySQL om twee of meer Strings te combineren of samen te voegen en terug te keren als een enkele waarde. De naam CONCAT komt van de aaneenschakeling van werkwoorden, wat betekent dat 2 of meer entiteiten samen worden gebracht.
In deze tutorial zullen we het gebruik van CONCAT leren met voorbeelden van query's en andere variaties van de CONCAT-functie die door MySQL wordt geleverd.
Wat je leert:
MySQL CONCAT-functie
Syntaxis:
De syntaxis van de CONCAT-functie is duidelijk. Het bevat alleen een door komma's gescheiden lijst van de strings die moeten worden samengevoegd.
Zowel de invoer- als uitvoertypes die door de CONCAT-functie worden verwacht, zijn strings. Zelfs als het wordt geleverd met cijfers, is de uiteindelijke uitvoer String.
Bijvoorbeeld:
# 1) Met invoertypes als Strings.
#twee) Met invoer als getallen / getallen met drijvende komma.
CONCAT gebruiken met SELECT-verklaringen
CONCAT wordt het meest gebruikt naast de SELECT-query's, waar het gegevens uit 2 of meer kolommen kan combineren in een enkele kolom.
Een klassiek voorbeeld kan zijn, stel dat we een tabel hebben met aparte kolommen voor de velden voornaam en achternaam. Stel dat u tijdens het weergeven van gegevens de volledige naam wilt weergeven in plaats van de voornaam en achternaam. We kunnen gebruik maken van CONCAT en de geselecteerde gegevens dienovereenkomstig weergeven.
Laten we dit in actie zien.
beste spionage-apps voor mobiele telefoons voor Android
Maak eerst een studententabel met velden - id, voornaam, achternaam, leeftijd, geboortedatum en afdeling.
Voeg enkele dummy-gegevens in de tabel in.
Schrijf nu een SELECT-query om een volledige naam te krijgen als een aaneengeschakelde tekenreeks die voornaam en achternaam combineert.
// Uitvoer
voor-en achternaam |
---|
Darren Nog steeds |
AbhishekKumar |
AmitSingh |
StevenJohnson |
KartikShamungam |
Zoals u kunt zien in de bovenstaande uitvoer, is er geen ruimte tussen voornaam en achternaam, waardoor deze onleesbaar wordt. We kunnen spatiëring toevoegen door de CONCAT-functie bij te werken om een extra spatie als tekenreeks te hebben die aaneengeschakeld moet worden.
Dit zou ervoor zorgen dat u bij elke invoer extra tussenruimte zou hebben.
CONCAT gebruiken met GROUP
MySQL biedt een andere functie genaamd GROUP_CONCAT.
Het is vergelijkbaar met CONCAT, maar het verschilt in de manier waarop CONCAT wordt gebruikt om waarden tussen kolommen te combineren, terwijl de functie GROUP_CONCAT meestal wordt gebruikt voor het samenvoegen van waarden tussen rijen.
MySQL GROUP_CONCAT Syntax
Dus in de GROUP_CONCAT-functie kun je zien:
- col_name: Dit is de kolom waarmee u wilt samenvoegen. Er is een optionele DISTINCT-clausule om herhaalde waarden te voorkomen.
- BESTEL DOOR: De ORDER BY-clausule wordt gebruikt om de volgorde in de aaneengeschakelde lijst te specificeren en is optioneel.
- AFSCHEIDER: Dit is weer een optionele clausule die kan worden gebruikt om een aangepast scheidingsteken tussen de aaneengeschakelde waarden te definiëren. Standaard is komma (,) het scheidingsteken.
MySQL GROUP_CONCAT Voorbeelden
Stel dat we dat willen in het bovenstaande Student-tabelvoorbeeld vind een lijst met aaneengeschakelde afdelingen
In de bovenstaande vraag,
- De uitvoer bevat een door komma's gescheiden lijst van alle afdelingen die beschikbaar zijn in de afdelingskolom.
- Er zijn ook herhalende waarden ( Bijvoorbeeld, ENGINEERING) aangezien we geen DISTINCT-clausule hebben gespecificeerd.
Laten we hetzelfde voorbeeld proberen met de DISTINCT-clausule:
Dit zou alleen de verschillende waarden van de afdelingskolom retourneren.
Voeg nu een aangepast scheidingsteken toe als ‘|’ en ORDER BY-clausule om afdelingsnamen in oplopende volgorde te sorteren
Dus in de bovenstaande vraag,
- Afdelingsnamen worden in oplopende volgorde gesorteerd.
- Er worden geen herhalende waarden geretourneerd.
- Het scheidingsteken is gewijzigd van ‘,’ in ‘|
Laten we eens kijken een ander voorbeeld om de aaneengeschakelde waarden van studenten in elke afdeling op te sommen.
Hier zouden we niet zo DISTINCT willen omdat 2 studenten op een afdeling dezelfde naam zouden kunnen hebben.
// Uitvoer
afdeling | studenten |
---|---|
BOEKHOUDING | Abhishek |
ENGINEERING | Amit | Darren |
PERSONEELSZAKEN | Steven |
STAGIAIR | Kartik |
Een combinatie van CONCAT en GROUP_CONCAT
Stel dat we in het bovenstaande voorbeeld de GECONCATENERDE waarden van naam en achternaam samen met elke afdeling willen weergeven.
Om dit te bereiken, kunnen we CONCAT gebruiken binnen het GROUP_CONCAT commando.
Laten we dit hieronder in actie zien:
// Uitvoer
afdeling | studenten |
---|---|
BOEKHOUDING | Abhishek kumar |
ENGINEERING | Amit Singh | Darren Still |
PERSONEELSZAKEN | Steven Johnson |
STAGIAIR | Kartik Shamungam |
Omgaan met NULL-waarden met CONCAT
CONCAT verwacht String-argumenten en retourneert de uitvoer als String.
Als een invoer voor de CONCAT-functie NULL is, dan is de uitvoer ook NULL.
Om NULL-waarden af te handelen, kunt u gebruik maken van een ifNull-instructie binnen de CONCAT-functie die een standaard- of lege waarde zou garanderen in het geval van de NULL-waarde uit de kolom.
Stel dat we 2 strings en 1 NULL-waarde hebben voor CONCAT, zoals in het bovenstaande voorbeeld.
In de bovenstaande query hebben we een ifNull-functie toegevoegd die de NULL-waarde omringt (of een kolom die NULL zou kunnen zijn) - als de NULL-match succesvol is, zou het ‘hallo’ retourneren, anders de werkelijke kolomwaarde.
Dus in de uitvoer kun je zien dat voor de NULL-string ‘hallo’ wordt afgedrukt.
Veel Gestelde Vragen
V # 1) Hoe voeg ik kolommen samen in MySQL?
Antwoord: MySQL biedt een CONCAT-functie om 2 of meer kolommen uit een of meer tabellen te combineren of samen te voegen en de samengevoegde waarden in de uitvoer te retourneren.
Q # 2) Waar en wanneer moet ik de concat-methode in MySQL gebruiken?
Antwoord: De CONCAT-methode wordt over het algemeen gebruikt tegen de weergave van queryresultaten waarbij u twee of meer kolommen wilt samenvoegen en deze als één kolom wilt weergeven.
Bijvoorbeeld, stel dat u een tabel heeft die de voornaam en achternaam als afzonderlijke kolommen bevat en u wilt ze weergeven als een enkele entiteit met de naam fullName - dan kunt u de CONCAT-functie gebruiken om de waarden van de kolom voornaam en achternaam samen te voegen en ze samen weer te geven als een enkele kolom.
V # 3) Wat is MySQL GROUP_CONCAT?
Antwoord: Net als bij CONCAT, wordt MySQL GROUP_CONCAT ook gebruikt om waarden in een tabel samen te voegen. Het verschil hier is dat CONCAT wordt gebruikt om waarden over kolommen te combineren, GROUP_CONCAT geeft u de mogelijkheid om waarden over rijen te combineren.
Het is ook belangrijk op te merken dat zowel GROUP_CONCAT als CONCAT kunnen worden gecombineerd om de gewenste resultaten te retourneren.
GROUP_CONCAT wordt over het algemeen gebruikt in scenario's waarin u waarden in rijen wilt GROEPEREN of combineren. Bijvoorbeeld - je hebt een producttabel met productnaam en categorie en je wilt alle producten voor een bepaalde categorie opsommen als door komma's gescheiden waarden - dan kun je GROUP_CONCAT gebruiken.
Vraag:
V # 4) Hoe kan ik een scheidingsteken specificeren met de opdracht CONCAT?
Antwoord: Met CONCAT kunt u een scheidingsteken opgeven als een afzonderlijke tekenreeks die moet worden samengevoegd.
Bijvoorbeeld: Stel dat u ‘|’ als scheidingsteken wilt gebruiken, dan kunt u in het CONCAT-commando deze string specificeren tussen de kolomnamen die u aaneenschakelt.
V # 5) Wat is het verschil tussen CONCAT- en CONCAT_WS-opdrachten?
Antwoord: CONCAT_WS is een andere variant van CONCAT die wordt geleverd door MySQL, waarmee een gebruiker een scheidingsteken kan specificeren voor de kolommen die worden samengevoegd.
Dit heeft de voorkeur boven CONCAT in situaties waarin u meer kolommen wilt samenvoegen en hetzelfde scheidingsteken wilt gebruiken voor alle kolommen die aaneengeschakeld zijn.
Voorbeeld: Stel dat er een tafelstudent is met velden: fname, lname en adres.
Nu willen we al deze drie velden samenvoegen en scheiden door ‘|’.
Gebruik makend van CONCAT , moeten we het scheidingsteken specificeren als een aparte string die moet worden samengevoegd.
Terwijl met CONCAT_WS u hoeft het scheidingsteken slechts één keer op te geven.
Gevolgtrekking
In deze tutorial hebben we geleerd over de MySQL CONCAT-functie en het gebruik ervan. Deze functie is over het algemeen erg handig bij het weergeven van queryresultaten voor het samenvoegen van waarden in verschillende kolommen.
We hebben ook geleerd over 2 verschillende variaties van de CONCAT-functie - een is aaneenschakeling met een scheidingsteken met CONCAT_WS en een andere is aaneenschakeling van waarden van rijen met behulp van de MySQL GROUP_CONCAT-functie.
Aanbevolen literatuur
- MySQL JOIN-zelfstudie: binnen, buiten, kruis, links, rechts en zelf
- MySQL UNION - Uitgebreide tutorial met Union-voorbeelden
- MySQL-datumnotatie en tijdstempelfuncties met voorbeelden
- MySQL invoegen in tabel - Verklaring syntaxis en voorbeelden invoegen
- MySQL Update Statement Tutorial - Update Query Syntax & Voorbeelden
- MySQL Create Bekijk zelfstudie met codevoorbeelden
- C # Functies / methoden zelfstudie met codevoorbeelden