Condividi
Concatenare stringhe MySql
Come faccio in MySql a concatenare (unire) due o più campi di tipo stringa da una stessa tabella? Vorrei riuscire a fare questo per ottenere un dato costruito (la frase di tipo testo) direttamente a livello di database, piuttosto che farlo a livello di codice di programmazione, dovrebbe essere meglio no!
Ma come si uniscono le colonne di tipo string in MySql? Esiste una funzione predefinita?
Risolta
2
MySql
12-03-2020
1 Risposta
5688 Visite
+2
Risposte ( 1 approvate )
In MySql il tipo string viene rappresentato dai tipi: CHAR, VARCHAR e TEXT (con i suoi sottotipi). Come in tutti i linguaggi sql (e non) le stringhe rivestono un ruolo fondamentale per la trattazione dei dati, e come giustamente sottolinei tu, poterle trattare direttamente a livello di database è una ottimizzazione a livello di performance dell'applicativo che andrai a realizzare non da poco (quando i dati si fanno tanti).
Per concatenare, unire, collegare, chiamalo come vuoi delle colonne di tipo testuale in MySql esistono due funzioni predefinite: CONCAT, CONCAT_WS; vediamole in ordine:
La funzione CONCAT di MySql
La CONCAT accetta un numero N di parametri di tipo testuale e ne restituisce un'unica stringa concatenata da tutte le stringhe passate alla funzione, sia che queste siano il dato di una colonna appartenente ad una tabella, sia che siano delle stringhe o del testo libero, facciamo un esempio per capirci meglio, supponiamo tu voglia costruire l'indirizzo completo di un cliente ricavandolo dalle colonne che ne compongono le varie parti, scriveremo in questo modo:
come vedi la CONCAT riceve ben 6 parametri, mischiati tra campi (colonne) della tabella 'Clienti' e stringhe libere indicanti in questo caso: spazi, trattini e punteggiatura (ma poteva essere qualsiasi testo); ma tutti bada bene sono di tipo string, la CONCAT non farà altro che unirli tra di loro e restituire un'unica stringa rappresentante in questo caso l'intero indirizzo.
La funzione CONCAT_WS di MySql
Adesso vediamo la CONCAT_WS, questa funzione come la sua sorella svolge il compito di concatenare due o più colonne di tipo testo, solo che permette tramite il suo primo parametro di specificare un carattere o stringa che funga da collante tra le varie componenti testuali, facciamo un altro esempio così da comprenderlo facilmente, rifacendoci alla costruzione di un indirizzo come sopra, potremmo usare la CONCAT_WS piuttosto che la CONCAT specificando un trattino come carattere collante unificatore dei vari pezzi di testo, in questo modo:
in questo caso tutto l'indirizzo sarà costruito direttamente tramite i dati presenti nelle colonne specificate per la tabella 'Clienti', separando ognuno di essi con un trattino, alla fine otterremo un'unica stringa indirizzo del tipo: "Via Argento 28 - 91077 - Abbiategrasso - Milano".
Ecco come tramite le funzioni CONCAT e CONCAT_WS sia facilissimo in MySql concatenare campi testo e stringhe, e ne abbiamo visto pure le differenze e l'utilizzo di queste funzioni, non ti resta che metterle in pratica.