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 3
MySql 12-03-2020 1 Risposta 5279 Visite +2
Nino Belpiano

Nino Belpiano

Autore di questa domanda

Risposte ( 1 approvate )

  1. Michele Brughese
    +1
    12-03-2020 10:09:54
    Rispondi

    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:

    SELECT CONCAT(Via, " - ", CodPost, ", ", Citta, "(", Provincia, ")") AS Indirizzo
    FROM Clienti; 

    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:

    SELECT CONCAT(" - ", Via, CodPost, Citta, Provincia) AS Indirizzo FROM Clienti; 

    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.

Rispondi

Per poter rispondere a questa domanda, devi essere registrato e loggato sul sito, dopodichè compila il box sottostante cercando di essere il più chiaro ed esauriente possibile, la tua risposta potrebbe essere la soluzione che l'utente cerca ed essere contrassegnata come migliore, consentendoti così di ottenere punti ed autorevolezza.

 Domanda Precedente

 Elenco Domande 

Domanda Successiva