mysql concat group_concat functions with examples
Questo tutorial spiega come utilizzare MySQL CONCAT con le funzioni Select e GROUP_CONCAT con sintassi ed esempi pratici:
CONCAT è una funzione String supportata da MySQL per combinare o unire due o più stringhe insieme e restituire come un singolo valore. Il nome CONCAT deriva dal verbo concatenazione, che significa unire 2 o più entità insieme.
In questo tutorial, impareremo l'uso di CONCAT con esempi di query e altre varianti della funzione CONCAT fornita da MySQL.
Cosa imparerai:
Funzione MySQL CONCAT
Sintassi:
La sintassi della funzione CONCAT è semplice. Contiene solo un elenco separato da virgole delle stringhe che devono essere unite.
CONCAT(string1, string2, ------ stringN)Sia il tipo di input che quello di output previsti dalla funzione CONCAT sono stringhe. Anche se viene fornito con numeri, l'output finale sarà String.
Per esempio:
# 1) Con tipi di input come stringhe.
SELECT CONCAT('string1', 'string2'); //Output string1string2#Due) Con input come numeri / numeri in virgola mobile.
SELECT CONCAT(1,2); //Output 12 SELECT CONCAT(1.1234,2); //Output 1.12342Utilizzo di CONCAT con istruzioni SELECT
CONCAT è più ampiamente utilizzato insieme alle query SELECT, dove può combinare i dati di 2 o più colonne in una singola colonna.
Un classico esempio può essere, supponiamo di avere una tabella che ha colonne separate per i campi firstName e lastName. Quindi, durante la visualizzazione dei dati, supponiamo che si desideri mostrare FullName invece di firstName e lastName. Possiamo utilizzare CONCAT e visualizzare di conseguenza i dati selezionati.
Vediamolo in azione.
la migliore estensione per il blocco dei pop-up per Chrome
Innanzitutto, crea una tabella Studente con campi: id, nome, cognome, età, data di nascita e dipartimento.
CREATE TABLE student (id INT PRIMARY KEY, fname VARCHAR(100), lname VARCHAR(100), age INT, dob DATE, department VARCHAR(100));Inserisci alcuni dati fittizi nella tabella.
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');Ora scrivi una query SELECT per ottenere un nome completo come una stringa concatenata che combina nome e cognome.
SELECT CONCAT(fname,lname) as fullName from student//Produzione
| nome e cognome |
|---|
| DarrenStill |
| AbhishekKumar |
| AmitSingh |
| StevenJohnson |
| KartikShamungam |
Come puoi vedere nell'output sopra, non c'è spaziatura tra nome e cognome, il che lo rende illeggibile. Possiamo aggiungere la spaziatura aggiornando la funzione CONCAT per avere un carattere di spazio aggiuntivo come stringa da concatenare.
SELECT CONCAT(fname, ' ', lname) as fullName from studentCiò assicurerebbe che con ogni voce, avresti una spaziatura extra in mezzo.
Utilizzo di CONCAT con GROUP
MySQL fornisce un'altra funzione chiamata GROUP_CONCAT.
È simile a CONCAT, ma differisce nel modo in cui CONCAT viene utilizzato per combinare i valori tra le colonne, mentre la funzione GROUP_CONCAT viene utilizzata principalmente per concatenare i valori tra le righe.
Sintassi di 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;Quindi, nella funzione GROUP_CONCAT, puoi vedere:
- col_name: Questa è la colonna con cui vuoi concatenare. È presente una clausola DISTINCT facoltativa per evitare la ripetizione di valori.
- ORDINATO DA: La clausola ORDER BY viene utilizzata per specificare l'ordine all'interno dell'elenco concatenato ed è facoltativa.
- SEPARATORE: Anche questa è una clausola opzionale che può essere utilizzata per definire un separatore personalizzato tra i valori concatenati. Per impostazione predefinita, la virgola (,) è il separatore.
Esempi di MySQL GROUP_CONCAT
Nell'esempio della tabella Studente sopra, supponiamo di volerlo trovare un elenco di reparti concatenati .
SELECT GROUP_CONCAT(department) as departments FROM student //Output ENGINEERING,ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEENella query sopra,
- L'output contiene un elenco separato da virgole di tutti i reparti disponibili nella colonna reparto.
- Inoltre, ci sono valori ripetuti ( Per esempio, ENGINEERING) in quanto non abbiamo specificato una clausola DISTINCT.
Proviamo lo stesso esempio con la clausola DISTINCT:
SELECT GROUP_CONCAT(DISTINCT department) as departments FROM student //Output ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEECiò restituirebbe solo i valori distinti della colonna reparto.
Ora aggiungi un separatore personalizzato come '|' e la clausola ORDER BY per disporre i nomi dei dipartimenti ordinati in ordine crescente
SELECT GROUP_CONCAT(DISTINCT department separator ' | ') as departments FROM student //Output ACCOUNTING | ENGINEERING | HUMAN RESOURCES | TRAINEEQuindi, nella query sopra,
- I nomi dei reparti sono ordinati in ordine crescente.
- Non vengono restituiti valori ripetuti.
- Il separatore viene modificato da ',' a '| '.
Vediamo un altro esempio per elencare i valori concatenati degli studenti in ciascun dipartimento.
Qui non vorremmo DISTINCT poiché 2 studenti in un dipartimento potrebbero avere lo stesso nome.
SELECT department, GROUP_CONCAT(fname ORDER BY fname ASC SEPARATOR ' | ') AS students FROM student GROUP BY department// Produzione
| Dipartimento | studenti |
|---|---|
| CONTABILITÀ | Abhishek |
| INGEGNERIA | Amit | Darren |
| RISORSE UMANE | Steven |
| TRAINEE | Kartik |
Combinazione di CONCAT e GROUP_CONCAT
Nell'esempio precedente, supponiamo di voler mostrare i valori CONCATENATI di nome e cognome insieme a ciascun reparto.
Per ottenere ciò, possiamo utilizzare CONCAT all'interno del comando GROUP_CONCAT.
Vediamolo in azione di seguito:
SELECT department, GROUP_CONCAT(CONCAT(fname, ' ', lname) order by fname asc SEPARATOR ' | ') as students from student group by department//Produzione
| Dipartimento | studenti |
|---|---|
| CONTABILITÀ | Abhishek kumar |
| INGEGNERIA | Amit Singh | Darren Still |
| RISORSE UMANE | Steven Johnson |
| TRAINEE | Kartik shamungam |
Gestione dei valori NULL con CONCAT
CONCAT prevede argomenti String e restituisce l'output come String.
Se qualsiasi input per la funzione CONCAT è NULL, anche l'output sarà NULL.
SELECT CONCAT('string1','string2', NULL); //Output NULLPer gestire i valori NULL, è possibile utilizzare un'istruzione ifNull all'interno della funzione CONCAT che assicurerebbe un valore predefinito o vuoto nel caso del valore NULL dalla colonna.
Supponiamo di avere 2 stringhe e 1 valore NULL per CONCAT, come nell'esempio precedente.
SELECT CONCAT('string1','string2', ifNull(NULL,'hello')); //Output string1string2helloNella query precedente, abbiamo aggiunto una funzione ifNull che circonda il valore NULL (o una colonna che potrebbe essere NULL): se la corrispondenza NULL ha esito positivo, restituirà 'ciao' altrimenti il valore effettivo della colonna.
Quindi nell'output, puoi vedere per la stringa NULL, 'ciao' è stampato.
Domande frequenti
D # 1) Come unisco le colonne in MySQL?
Risposta: MySQL fornisce una funzione CONCAT per combinare o unire 2 o più colonne da una o più tabelle e restituire i valori uniti nell'output.
D # 2) Dove e quando devo usare il metodo concat in MySQL?
Risposta: Il metodo CONCAT viene generalmente utilizzato contro la visualizzazione dei risultati delle query in cui si desidera unire 2 o più colonne e rappresentarle come una singola colonna.
Per esempio, supponi di avere una tabella che contiene il nome e il cognome come colonne separate e desideri visualizzarli come un'unica entità chiamata fullName - quindi puoi utilizzare la funzione CONCAT per unire i valori della colonna del nome e del cognome e visualizzarli insieme come una singola colonna.
D # 3) Cos'è MySQL GROUP_CONCAT?
Risposta: Simile a CONCAT, MySQL GROUP_CONCAT viene utilizzato anche per concatenare i valori in una tabella. La differenza qui è che mentre CONCAT viene utilizzato per combinare i valori tra le colonne, GROUP_CONCAT ti dà la capacità di combinare i valori tra le righe.
È anche importante notare che sia GROUP_CONCAT che CONCAT possono essere combinati per restituire i risultati desiderati.
GROUP_CONCAT viene utilizzato generalmente negli scenari in cui si desidera RAGGRUPPARE o combinare i valori tra le righe. Per esempio - hai una tabella di prodotti con il nome e la categoria del prodotto e desideri elencare tutti i prodotti rispetto a una determinata categoria come valori separati da virgole, quindi puoi utilizzare GROUP_CONCAT.
Query:
SELECT categoryName, GROUP_CONCAT(itemName) AS itemList FROM products GROUP BY categoryNameQ # 4) Come posso specificare un separatore utilizzando il comando CONCAT?
Risposta: Con CONCAT, puoi specificare il separatore come una stringa separata da concatenare.
Per esempio: Supponi di voler utilizzare '|' come separatore, quindi nel comando CONCAT puoi specificare questa stringa tra i nomi delle colonne che stai concatenando.
SELECT CONCAT(fname, '| ', lname) as fullName from studentD # 5) Qual è la differenza tra i comandi CONCAT e CONCAT_WS?
Risposta: CONCAT_WS è un'altra variante di CONCAT fornita da MySQL, che consente a un utente di specificare un separatore per le colonne che vengono concatenate.
È preferibile rispetto a CONCAT nelle situazioni in cui si desidera unire un numero maggiore di colonne e utilizzare lo stesso separatore per tutte le colonne concatenate.
Esempio: Supponiamo che ci sia uno studente di tabella con i campi: fname, lname e address.
Ora vogliamo concatenare tutti questi tre campi e separarli con '|'.
Utilizzando CONCAT , dobbiamo specificare il separatore come una stringa separata da concatenare.
SELECT CONCAT(fname, '|', lname, '|', address) as mergedColumn from studentMentre con CONCAT_WS è sufficiente specificare una volta il separatore.
SELECT CONCAT_WS('|', fname, lname, address) as mergedColumn from studentConclusione
In questo tutorial, abbiamo imparato a conoscere la funzione CONCAT di MySQL e il suo utilizzo. Questa funzione è generalmente molto utile quando si visualizzano i risultati delle query per l'unione di valori su colonne diverse.
Abbiamo anche appreso circa 2 diverse varianti della funzione CONCAT: una si concatena con un separatore utilizzando CONCAT_WS e un'altra concatenando valori di righe utilizzando la funzione MySQL GROUP_CONCAT.
Lettura consigliata
- MySQL JOIN Tutorial: Inner, Outer, Cross, Left, Right e Self
- MySQL UNION - Tutorial completo con esempi di unione
- Formato data MySQL e funzioni di timestamp con esempi
- MySQL Insert Into Table - Inserisci sintassi ed esempi di istruzioni
- Tutorial sull'istruzione di aggiornamento di MySQL: sintassi ed esempi delle query di aggiornamento
- Tutorial MySQL Create View con esempi di codice
- Esercitazione su funzioni / metodi C # con esempi di codice