mysql concat group_concat functions with examples
Ten samouczek wyjaśnia, jak używać MySQL CONCAT z funkcjami Select i GROUP_CONCAT, wraz ze składnią i praktycznymi przykładami:
CONCAT to funkcja ciągu obsługiwana przez MySQL do łączenia lub łączenia dwóch lub więcej ciągów znaków i zwracania jako pojedynczej wartości. Nazwa CONCAT pochodzi od konkatenacji czasowników, co oznacza łączenie razem 2 lub więcej jednostek.
W tym samouczku nauczymy się używać funkcji CONCAT z przykładami zapytań i innymi odmianami funkcji CONCAT udostępnianej przez MySQL.
Czego się nauczysz:
Funkcja MySQL CONCAT
Składnia:
Składnia funkcji CONCAT jest prosta. Zawiera po prostu listę ciągów znaków oddzielonych przecinkami, które należy połączyć.
CONCAT(string1, string2, ------ stringN)
Oba typy danych wejściowych i wyjściowych oczekiwane przez funkcję CONCAT są ciągami. Nawet jeśli zawiera liczby, ostatecznym wynikiem będzie łańcuch.
Na przykład:
# 1) Z typami wejściowymi jako ciągami.
SELECT CONCAT('string1', 'string2'); //Output string1string2
#dwa) Z danymi wejściowymi jako liczby / liczby zmiennoprzecinkowe.
SELECT CONCAT(1,2); //Output 12 SELECT CONCAT(1.1234,2); //Output 1.12342
Używanie CONCAT z instrukcjami SELECT
CONCAT jest najczęściej używany obok zapytań SELECT, gdzie może łączyć dane z 2 lub więcej kolumn w jedną kolumnę.
Klasycznym przykładem może być, załóżmy, że mamy tabelę, która ma oddzielne kolumny dla pól firstName i lastName. Więc podczas wyświetlania danych przypuśćmy, że chodzi o to, aby pokazać FullName zamiast firstName i lastName. Możemy skorzystać z CONCAT i odpowiednio wyświetlić wybrane dane.
Zobaczmy to w akcji.
Czy lista połączona z java jest podwójnie połączona
Najpierw utwórz tabelę Studentów z polami - identyfikator, imię, nazwisko, wiek, data urodzenia i dział.
CREATE TABLE student (id INT PRIMARY KEY, fname VARCHAR(100), lname VARCHAR(100), age INT, dob DATE, department VARCHAR(100));
Wstaw trochę fikcyjnych danych do tabeli.
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');
Teraz napisz zapytanie SELECT, aby uzyskać pełne imię i nazwisko w postaci połączonego ciągu zawierającego imię i nazwisko.
SELECT CONCAT(fname,lname) as fullName from student
//Wynik
fullName |
---|
DarrenStill |
AbhishekKumar |
AmitSingh |
StevenJohnson |
KartikShamungam |
Jak widać na powyższym wyjściu, między imieniem a nazwiskiem nie ma odstępów, co czyni je nieczytelnymi. Możemy dodać odstępy, aktualizując funkcję CONCAT, aby zawierała dodatkowy znak spacji jako ciąg do łączenia.
SELECT CONCAT(fname, ' ', lname) as fullName from student
Zapewniłoby to, że przy każdym wpisie pojawią się dodatkowe odstępy między nimi.
Używanie CONCAT z GROUP
MySQL udostępnia inną funkcję o nazwie GROUP_CONCAT.
Jest podobna do CONCAT, ale różni się sposobem, w jaki CONCAT jest używany do łączenia wartości w kolumnach, podczas gdy funkcja GROUP_CONCAT jest głównie używana do łączenia wartości w wierszach.
Składnia 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;
Tak więc w funkcji GROUP_CONCAT możesz zobaczyć:
- nazwa_kolumny: To jest kolumna, z którą chcesz połączyć. Istnieje opcjonalna klauzula DISTINCT, aby uniknąć powtarzania wartości.
- ZAMÓW PRZEZ: Klauzula ORDER BY służy do określenia kolejności na połączonej liście i jest opcjonalna.
- SEPARATOR: Jest to ponownie klauzula opcjonalna, której można użyć do zdefiniowania niestandardowego separatora między połączonymi wartościami. Domyślnie separatorem jest przecinek (,).
Przykłady MySQL GROUP_CONCAT
Załóżmy, że w powyższym przykładzie tabeli uczniów chcemy znaleźć listę połączonych działów .
SELECT GROUP_CONCAT(department) as departments FROM student //Output ENGINEERING,ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEE
W powyższym zapytaniu
- Dane wyjściowe zawierają rozdzieloną przecinkami listę wszystkich działów, które są dostępne w kolumnie dział.
- Istnieją również powtarzające się wartości ( Na przykład, ENGINEERING), ponieważ nie określiliśmy klauzuli DISTINCT.
Spróbujmy tego samego przykładu z klauzulą DISTINCT:
SELECT GROUP_CONCAT(DISTINCT department) as departments FROM student //Output ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEE
To po prostu zwróci odrębne wartości kolumny działu.
Teraz dodaj niestandardowy separator jako „|” i klauzulę ORDER BY, aby nazwy działów były posortowane w kolejności rosnącej
SELECT GROUP_CONCAT(DISTINCT department separator ' | ') as departments FROM student //Output ACCOUNTING | ENGINEERING | HUMAN RESOURCES | TRAINEE
Tak więc w powyższym zapytaniu
- Nazwy działów są sortowane w kolejności rosnącej.
- Nie są zwracane żadne powtarzające się wartości.
- Separator zmienia się z „,” na „| „.
Zobaczmy kolejny przykład, aby wymienić połączone wartości studentów na każdym wydziale.
Tutaj nie chcielibyśmy, aby tak WYRÓŻNIAJĄCY SIĘ, ponieważ 2 studentów na wydziale mogło mieć to samo imię.
SELECT department, GROUP_CONCAT(fname ORDER BY fname ASC SEPARATOR ' | ') AS students FROM student GROUP BY department
// Wynik
departament | studentów |
---|---|
KSIĘGOWOŚĆ | Abhishek |
INŻYNIERIA | Amit | Darren |
ZASOBY LUDZKIE | Steven |
STAŻYSTA | Kartik |
Łączenie CONCAT i GROUP_CONCAT
W powyższym przykładzie załóżmy, że chcemy pokazać ZŁĄCZONE wartości imienia i nazwiska wraz z każdym działem.
Aby to osiągnąć, możemy użyć CONCAT w ramach polecenia GROUP_CONCAT.
Zobaczmy to w akcji poniżej:
SELECT department, GROUP_CONCAT(CONCAT(fname, ' ', lname) order by fname asc SEPARATOR ' | ') as students from student group by department
//Wynik
departament | studentów |
---|---|
KSIĘGOWOŚĆ | Abhishek kumar |
INŻYNIERIA | Amit Singh | Darren Still |
ZASOBY LUDZKIE | Steven Johnson |
STAŻYSTA | Kartik shamungam |
Obsługa wartości NULL za pomocą CONCAT
CONCAT oczekuje argumentów typu String i zwraca dane wyjściowe jako ciąg.
Jeśli jakiekolwiek dane wejściowe funkcji CONCAT mają wartość NULL, to również wynik będzie miał wartość NULL.
SELECT CONCAT('string1','string2', NULL); //Output NULL
Aby obsłużyć wartości NULL, można użyć instrukcji ifNull w funkcji CONCAT, która zapewniłaby wartość domyślną lub pustą w przypadku wartości NULL z kolumny.
Załóżmy, że mamy 2 ciągi i 1 wartość NULL do CONCAT, tak jak w powyższym przykładzie.
SELECT CONCAT('string1','string2', ifNull(NULL,'hello')); //Output string1string2hello
W powyższym zapytaniu dodaliśmy funkcję ifNull otaczającą wartość NULL (lub kolumnę, która może mieć wartość NULL) - jeśli dopasowanie NULL się powiedzie, zwróci „hello”, w przeciwnym razie rzeczywistą wartość kolumny.
Na wyjściu widać więc, że w przypadku łańcucha NULL wypisywane jest słowo „hello”.
Często Zadawane Pytania
P # 1) Jak scalić kolumny w MySQL?
Odpowiedź: MySQL udostępnia funkcję CONCAT do łączenia lub scalania 2 lub więcej kolumn z jednej lub większej liczby tabel i zwracania scalonych wartości w wyniku.
Q # 2) Gdzie i kiedy muszę używać metody concat w MySQL?
Odpowiedź: Metoda CONCAT jest zwykle używana do wyświetlania wyników zapytań, w których chciałbyś połączyć 2 lub więcej kolumn i przedstawić je jako jedną kolumnę.
Na przykład, załóżmy, że masz tabelę, która zawiera imię i nazwisko jako oddzielne kolumny i chcesz wyświetlić je jako pojedynczą jednostkę o nazwie fullName - wtedy możesz użyć funkcji CONCAT, aby połączyć wartości kolumny imię i nazwisko i wyświetlić je razem jako pojedyncza kolumna.
Pytanie 3) Co to jest MySQL GROUP_CONCAT?
Odpowiedź: Podobnie jak CONCAT, MySQL GROUP_CONCAT jest również używany do łączenia wartości w tabeli. Różnica polega na tym, że funkcja CONCAT jest używana do łączenia wartości w kolumnach, a funkcja GROUP_CONCAT umożliwia łączenie wartości w wierszach.
Należy również pamiętać, że obie opcje GROUP_CONCAT i CONCAT można łączyć, aby uzyskać pożądane wyniki.
GROUP_CONCAT jest zwykle używany w scenariuszach, w których chcesz grupować lub łączyć wartości w wierszach. Na przykład - masz tabelę produktów z nazwą produktu i kategorią i chcesz wyszczególnić wszystkie produkty w danej kategorii jako wartości oddzielone przecinkami - wtedy możesz użyć GROUP_CONCAT.
Pytanie:
SELECT categoryName, GROUP_CONCAT(itemName) AS itemList FROM products GROUP BY categoryName
P # 4) Jak mogę określić separator za pomocą polecenia CONCAT?
Odpowiedź: Dzięki CONCAT możesz określić separator jako oddzielny ciąg do łączenia.
Na przykład: Załóżmy, że chcesz użyć znaku „|” jako separatora, a następnie w poleceniu CONCAT możesz określić ten ciąg między nazwami kolumn, które łączysz.
SELECT CONCAT(fname, '| ', lname) as fullName from student
P # 5) Jaka jest różnica między poleceniami CONCAT i CONCAT_WS?
Odpowiedź: CONCAT_WS to kolejna odmiana CONCAT udostępniana przez MySQL, która umożliwia użytkownikowi określenie separatora dla konkatenowanych kolumn.
Jest to preferowane rozwiązanie niż CONCAT w sytuacjach, w których chcesz scalić większą liczbę kolumn i użyć tego samego separatora dla wszystkich połączonych kolumn.
Przykład: Załóżmy, że jest uczeń tabeli z polami - imię, nazwisko i adres.
Teraz chcemy połączyć wszystkie te trzy pola i oddzielić je znakiem „|”.
Za pomocą CONCAT , musimy określić separator jako oddzielny ciąg do konkatenacji.
SELECT CONCAT(fname, '|', lname, '|', address) as mergedColumn from student
Podczas gdy z CONCAT_WS wystarczy raz określić separator.
SELECT CONCAT_WS('|', fname, lname, address) as mergedColumn from student
Wniosek
W tym samouczku poznaliśmy funkcję MySQL CONCAT i jej użycie. Ta funkcja jest zazwyczaj bardzo pomocna podczas wyświetlania wyników zapytania w celu scalania wartości w różnych kolumnach.
Dowiedzieliśmy się również o 2 różnych odmianach funkcji CONCAT - jedna to konkatenacja z separatorem za pomocą CONCAT_WS, a druga to konkatenacja wartości wierszy za pomocą funkcji MySQL GROUP_CONCAT.
rekomendowane lektury
- MySQL JOIN Tutorial: wewnętrzny, zewnętrzny, krzyżowy, lewy, prawy i własny
- MySQL UNION - kompleksowy samouczek z przykładami Unii
- Funkcje formatu daty i datownika MySQL z przykładami
- MySQL Wstaw do tabeli - Wstaw składnię instrukcji i przykłady
- Instrukcja MySQL Update - składnia i przykłady aktualizacji zapytania
- MySQL Create View - samouczek z przykładami kodu
- C # funkcje / metody samouczek z przykładami kodu