Il comando MySQL CONCAT permette di unire due o più stringhe in una sola. MySQL CONCAT non consente di uti­liz­za­re caratteri se­pa­ra­to­ri, mentre MySQL CONCAT_WS vi dà la pos­si­bi­li­tà di combinare e ottenere output di in­for­ma­zio­ni in modo ancora più chiaro.

Che cos’è MySQL CONCAT?

Il sistema di gestione di database re­la­zio­na­li MySQL funziona tramite tabelle. I dati sono me­mo­riz­za­ti in modo chiaro in righe e colonne e possono essere ri­chia­ma­ti e uniti in base alle necessità. Questa opzione è im­por­tan­te quando sono ne­ces­sa­rie in­for­ma­zio­ni pro­ve­nien­ti da due o più tabelle.

Nella pratica, il comando per unire più colonne è MySQL CONCAT, una funzione per stringhe da uti­liz­za­re quando de­si­de­ra­te combinare due o più espres­sio­ni 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 uti­liz­za­re MySQL CONCAT, il cui nome stesso indica chia­ra­men­te la capacità di “con­ca­te­na­re” le in­for­ma­zio­ni.

I dati MySQL sono me­mo­riz­za­ti in diverse tabelle e in varie righe e colonne e, quindi, ini­zial­men­te rimangono isolati. Per certe query o attività, tuttavia, può essere ne­ces­sa­rio ottenere degli output di queste in­for­ma­zio­ni com­bi­nan­do­le fra loro.

Nelle parti seguenti vi mostriamo alcuni esempi, come la com­bi­na­zio­ne di cognome, nome e indirizzo. Ini­zial­men­te, 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 espres­sio­ni da unire, separate da virgole; ad esempio, il comando si presenta così:

CONCAT (espressione1, espressione2, espressione3, …)
bash

È im­por­tan­te sapere che MySQL CONCAT converte le espres­sio­ni con­te­nen­ti 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’espres­sio­ne con il valore 0 conserva il valore 0.

In al­ter­na­ti­va al normale comando MySQL CONCAT esiste anche la funzione MySQL CONCAT_WS, che funziona inserendo un carattere se­pa­ra­to­re 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, …)
bash

MySQL CONCAT_WS re­sti­tui­sce il valore 0 solo se il valore del carattere se­pa­ra­to­re è 0.

Esempi con MySQL CONCAT

Per com­pren­de­re il fun­zio­na­men­to di MySQL CONCAT è utile dare un’occhiata ad alcuni facili esempi. Per iniziare, col­le­ghia­mo sem­pli­ce­men­te due stringhe, ottenendo un risultato di questo tipo:

SELECT CONCAT ('MySQL', 'CONCAT');
bash

In questo caso noterete che l’output è un semplice “My­SQL­CON­CAT”. Inserendo ora un valore zero, il comando si presenta così:

SELECT CONCAT ('MySQL', NULL, 'CONCAT');
bash

Mentre questo esempio non offre ancora alcun vantaggio effettivo e serve solo a mostrare il fun­zio­na­men­to di base del comando, il prossimo espe­ri­men­to appare già più utile all’atto pratico. A tal fine, im­ma­gi­nia­mo di avere un normale elenco clienti, suddiviso in più colonne, tra cui Codice cliente, Nome, Cognome, Indirizzo o Numero di telefono. I dati sono me­mo­riz­za­ti in modo in­di­pen­den­te 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, uti­liz­za­te il seguente comando:

SELECT CONCAT (nome, ' ', cognome) nome cliente
FROM elenco clienti;
bash

L’output elenca quindi tutti i clienti con il relativo nome e cognome.

Esempi con MySQL CONCAT_WS

Rimaniamo all’esempio pre­ce­den­te: per elencare i nomi in ordine inverso e separare cognome e nome con una virgola è ne­ces­sa­rio usare il comando MySQL CONCAT_WS. La procedura è simile, ma la virgola deve essere messa prima delle restanti in­for­ma­zio­ni. Di seguito un esempio:

SELECT CONCAT_WS (', ', Rossi, 'Mario');
bash

L’output cor­ri­spon­den­te è quindi “Rossi, Mario”.

Questo comando è l’ideale per ottenere output che riportino in­for­ma­zio­ni 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 uti­liz­za­re 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
bash

Il relativo output si presenta così:

Indirizzo cliente
Mario Rossi
Corso Italia 1
20099 Milano
Italia
Anna Bianchi
Via Garibaldi 10
00153 Roma
Italia
bash
Vai al menu prin­ci­pa­le