Come unire più stringhe con MySQL CONCAT
Il comando MySQL CONCAT permette di unire due o più stringhe in una sola. MySQL CONCAT non consente di utilizzare caratteri separatori, mentre MySQL CONCAT_WS vi dà la possibilità di combinare e ottenere output di informazioni in modo ancora più chiaro.
Che cos’è MySQL CONCAT?
Il sistema di gestione di database relazionali MySQL funziona tramite tabelle. I dati sono memorizzati in modo chiaro in righe e colonne e possono essere richiamati e uniti in base alle necessità. Questa opzione è importante quando sono necessarie informazioni provenienti da due o più tabelle.
Nella pratica, il comando per unire più colonne è MySQL CONCAT, una funzione per stringhe da utilizzare quando desiderate combinare due o più espressioni una dopo l’altra, che vengono quindi unite per ottenere un output sotto forma di una singola sequenza di caratteri. Vi sono molti modi per utilizzare MySQL CONCAT, il cui nome stesso indica chiaramente la capacità di “concatenare” le informazioni.
I dati MySQL sono memorizzati in diverse tabelle e in varie righe e colonne e, quindi, inizialmente rimangono isolati. Per certe query o attività, tuttavia, può essere necessario ottenere degli output di queste informazioni combinandole fra loro.
Nelle parti seguenti vi mostriamo alcuni esempi, come la combinazione di cognome, nome e indirizzo. Inizialmente, questi dati si trovano in singole colonne ed è quindi possibile eseguire ricerche o ottenere output sulla base dei singoli dati. Se, invece, vi serve avere questi tre dati combinati insieme, potete ricorrere al comando MySQL CONCAT.
La sintassi di MySQL CONCAT
La sintassi di base di MySQL CONCAT è molto semplice, analoga a quella dei comandi MySQL DELETE e MySQL REPLACE. Dopo il comando vero e proprio occorre elencare tutte le espressioni da unire, separate da virgole; ad esempio, il comando si presenta così:
CONCAT (espressione1, espressione2, espressione3, …)
bashÈ importante sapere che MySQL CONCAT converte le espressioni contenenti un valore numerico in una sequenza di caratteri binari. Le sequenze di caratteri binarie rimangono binarie, così come le sequenze di caratteri non binarie rimangono non binarie. Inoltre, un’espressione con il valore 0 conserva il valore 0.
In alternativa al normale comando MySQL CONCAT esiste anche la funzione MySQL CONCAT_WS, che funziona inserendo un carattere separatore fra le singole stringhe, mentre MySQL CONCAT non consente questo utilizzo. La sintassi di base di MySQL CONCAT_WS è la seguente:
CONCAT_WS (carattere separatore, espressione1, espressione2, espressione3, …)
bashMySQL CONCAT_WS restituisce il valore 0 solo se il valore del carattere separatore è 0.
Esempi con MySQL CONCAT
Per comprendere il funzionamento di MySQL CONCAT è utile dare un’occhiata ad alcuni facili esempi. Per iniziare, colleghiamo semplicemente due stringhe, ottenendo un risultato di questo tipo:
SELECT CONCAT ('MySQL', 'CONCAT');
bashIn questo caso noterete che l’output è un semplice “MySQLCONCAT”. Inserendo ora un valore zero, il comando si presenta così:
SELECT CONCAT ('MySQL', NULL, 'CONCAT');
bashMentre questo esempio non offre ancora alcun vantaggio effettivo e serve solo a mostrare il funzionamento di base del comando, il prossimo esperimento appare già più utile all’atto pratico. A tal fine, immaginiamo di avere un normale elenco clienti, suddiviso in più colonne, tra cui Codice cliente, Nome, Cognome, Indirizzo o Numero di telefono. I dati sono memorizzati in modo indipendente gli uni dagli altri.
Per ottenere un output con più dati insieme è quindi utile ricorrere al comando MySQL CONCAT, che permette, ad esempio, di creare un elenco di clienti con il loro nome completo unendo in sequenza nome, spazio e cognome tramite MySQL. A tal fine, utilizzate il seguente comando:
SELECT CONCAT (nome, ' ', cognome) nome cliente
FROM elenco clienti;
bashL’output elenca quindi tutti i clienti con il relativo nome e cognome.
Esempi con MySQL CONCAT_WS
Rimaniamo all’esempio precedente: per elencare i nomi in ordine inverso e separare cognome e nome con una virgola è necessario usare il comando MySQL CONCAT_WS. La procedura è simile, ma la virgola deve essere messa prima delle restanti informazioni. Di seguito un esempio:
SELECT CONCAT_WS (', ', Rossi, 'Mario');
bashL’output corrispondente è quindi “Rossi, Mario”.
Questo comando è l’ideale per ottenere output che riportino informazioni diverse in modo chiaro. L’ultimo esempio mostra come usare il comando MySQL CONCAT_WS per ottenere un indirizzo completo come output. Il codice da utilizzare si presenta così:
SELECT
CONCAT_WS (CHAR(13),
CONCAT_WS (' ', nome, cognome),
Riga indirizzo1,
Riga indirizzo2,
CONCAT_WS (' ', codice postale, città),
Stato,
CONCAT_WS (CHAR(13), ' ')) AS indirizzo cliente
FROM elenco clienti
bashIl relativo output si presenta così:
Indirizzo cliente
Mario Rossi
Corso Italia 1
20099 Milano
Italia
Anna Bianchi
Via Garibaldi 10
00153 Roma
Italia
bash