17th Mar 2023 Tempo di lettura: 8 minuti Come concatenare due colonne in SQL - Guida dettagliata Alexandre Bruffa sql concatenation Indice Come concatenare due colonne in SQL L'operatore || Utilizzo L'operatore di concatenazione || funziona anche con le colonne non di testo Attenzione ai NULL! Utilizzare la funzione COALESCE() per concatenare i valori NULL L'operatore + La funzione CONCAT La funzione CONCAT_WS Concatenare due colonne in SQL è facile! In SQL, la concatenazione è l'operazione di unione di stringhe, o parti di informazioni testuali. Scoprite come concatenare due colonne in SQL con questa guida dettagliata. La concatenazione in SQL è il processo di combinazione di due o più stringhe di caratteri, colonne o espressioni in un'unica stringa. Ad esempio, la concatenazione di 'Kate', ' ' e 'Smith' dà come risultato 'Kate Smith'. La concatenazione SQL può essere utilizzata in diverse situazioni in cui è necessario combinare più stringhe in un'unica stringa. Alcuni casi d'uso comuni sono: Creare nomi completi o altre stringhe composite da più colonne di una tabella, ad esempio concatenando il nome e il cognome di un utente per creare un nome completo. Creare etichette o titoli personalizzati concatenando più valori di stringa. Creare un identificatore unico concatenando più colonne, ad esempio un ID cliente e un numero d'ordine. Creare indirizzi e-mail concatenando un nome utente (katesmith) e un nome di dominio (learnSQL.com). Questi sono solo alcuni esempi, ma la concatenazione SQL può essere utilizzata in molte altre situazioni in cui è necessario combinare più stringhe. Il modo migliore per esercitarsi con l'SQL, compresa la concatenazione SQL, è il nostro programma interattivo SQL Practice Set. Contiene quasi 90 esercizi pratici, suddivisi in cinque sezioni tematiche. Il corso è un ottimo modo per rinfrescare le proprie conoscenze di SQL. Con la risoluzione di ogni esercizio, si acquisisce fiducia nelle proprie capacità. Come concatenare due colonne in SQL La sintassi della concatenazione in SQL può variare a seconda del dialetto SQL utilizzato. Ecco alcuni esempi delle tecniche più note di concatenazione in SQL. L'operatore || L'SQL standard utilizza l'operatore || (oltre ad altre opzioni). La maggior parte dei database SQL, con la notevole eccezione di SQL Server, supporta questo operatore. L'operatore || accetta due o più argomenti e restituisce una singola stringa concatenata. Utilizzo Immaginiamo il seguente caso. Abbiamo una tabella chiamata utenti che memorizza le informazioni sugli utenti: id first_name middle_name last_name age marital_status -------------------------------------------------------------- 1 Derek Brent Zoolander 35 S 2 Marty George McFly 20 S Utilizziamo l'operatore || per concatenare il nome e il cognome degli utenti e ottenere il nome completo: SELECT first_name || ' ' || last_name AS full_name FROM users; Il risultato: full_name --------------- Derek Zoolander Marty McFly In questo esempio, l'operatore || prende le colonne first_name e last_name dalla tabella e le concatena insieme. users e le concatena insieme con uno spazio in mezzo, ottenendo un nome completo per ogni utente. Il risultato viene quindi aliasato come full_name e restituito nei risultati della query. È possibile concatenare più stringhe con l'operatore || fornendo più di due argomenti. Ad esempio, la seguente istruzione SQL concatena il nome, il secondo e il cognome degli utenti: SELECT first_name || ' ' || middle_name || ' ' || last_name AS full_name FROM users; Il risultato: full_name --------------- Derek Brent Zoolander Marty George McFly L'operatore di concatenazione || funziona anche con le colonne non di testo I due esempi precedenti contengono solo stringhe; e gli altri tipi di dati? Gli argomenti dell'operatore || possono essere stringhe, colonne di testo, espressioni e altri tipi di dati come numeri o date. Verranno automaticamente convertiti in stringhe. Ecco un esempio di come utilizzare l'operatore || per concatenare il nome, il cognome e l'età di un utente in una nuova stringa: SELECT first_name || ' ' || last_name || ': ' || age || ' yo' AS user_details FROM users; Il risultato: user_details --------------- Derek Zoolander: 35 yo Marty McFly: 20 yo Si noti che il primo argomento della concatenazione deve essere di tipo testo. In caso contrario, è necessario eseguire il cast in un tipo di testo. Ecco un esempio di come utilizzare l'operatore || per concatenare l'ID e il nome di un utente per formare un identificatore unico: SELECT cast(id as VARCHAR) || '_' || first_name AS unique_id FROM users; Il risultato: unique_id --------------- 1_Derek 2_Marty Attenzione ai NULL! L'operatore di concatenazione | | restituisce NULL per qualsiasi argomento NULL. Immaginate di avere dei valori vuoti o NULL nel vostro database: id first_name middle_name last_name age marital_status -------------------------------------------------------- 3 Terminator T-1000 1 S 4 Robocop 2 S Se uno degli argomenti della concatenazione è NULL, l'intera espressione restituisce NULL. Nell'esempio seguente, proveremo una concatenazione con un argomento NULL: SELECT first_name || ' ' || last_name AS full_name FROM users; Il risultato: full_name --------------- Terminator T-1000 NULL Il secondo risultato è NULL: Robocop ha un nome, ma il suo secondo e il suo cognome sono NULL. Se si concatena 'Robocop' con NULL, si ottiene NULL. Nota: nel caso di Oracle, una stringa NULL è una stringa vuota. La concatenazione "ignora" la stringa NULL e gli argomenti concatenati vengono restituiti. Oracle restituirà quanto segue: full_name --------------- Terminator T-1000 Robocop Utilizzare la funzione COALESCE() per concatenare i valori NULL Un incredibile suggerimento per evitare i valori NULL è l'utilizzo della funzione COALESCE(). La funzione COALESCE() in SQL è una funzione integrata che restituisce il primo valore non NULL in un elenco di espressioni. La funzione accetta uno o più argomenti e restituisce il primo argomento che non è NULL. Nell'esempio seguente, supponiamo che il campo last_name possa essere NULL. Per evitare una concatenazione errata, utilizziamo la funzione COALESCE(): SELECT first_name || ' ' || COALESCE(last_name, '') AS full_name FROM users; Il risultato: full_name --------------- Terminator T-1000 Robocop Sopra, COALESCE() restituisce il cognome se il cognome non è NULL. Se il cognome è NULL, restituisce la stringa vuota ‘’. Questo ci permette di evitare di concatenare il valore NULL del cognome di Robocop e di ottenere un risultato NULL. L'operatore + L'operatore + viene utilizzato per concatenare le stringhe in MS SQL Server. Accetta due o più argomenti e restituisce una singola stringa concatenata. Ecco un esempio di utilizzo dell'operatore + per concatenare il nome e il cognome di un utente: SELECT first_name + ' ' + last_name AS full_name FROM users; Il risultato: full_name --------------- Derek Zoolander Marty McFly Con l'operatore +, nessuno degli argomenti viene convertito automaticamente. Ogni argomento dell'espressione deve essere del tipo VARCHAR se si vuole che la concatenazione abbia successo. Per concatenare valori di tipo diverso, si utilizza la funzione CAST(): SELECT first_name + ' ' + last_name + ': ' + CAST(age AS VARCHAR) + ' yo' AS user_details FROM users; Il risultato: user_details --------------- Derek Zoolander: 35 yo Marty McFly: 20 yo Senza la funzione CAST(), SQL Server lancia il seguente errore: MS SQL Token error: 'Error converting data type varchar to bigint.' La funzione CONCAT CONCAT() è un'altra funzione standard di SQL che concatena due o più valori. Tutti i sistemi di database più diffusi, tranne SQLite, accettano questa funzione; SQLite accetta solo l'operatore ||. Le principali differenze tra gli operatori || e + e la funzione CONCAT() sono: CONCAT() gli argomenti vengono automaticamente convertiti in stringhe, per cui è possibile utilizzare argomenti di tipi di dati diversi. CONCAT() tratta i valori NULL come stringhe vuote e li ignora. L'eccezione è rappresentata da MySQL (e, in misura minore, da MariaDB). In MySQL, la funzione CONCAT() è equivalente all'operatore ||; gli argomenti NULL danno come risultato NULL. Ecco un esempio di utilizzo di CONCAT() per concatenare i nomi e i cognomi degli utenti: SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM users; Il risultato: full_name --------------- Derek Zoolander Marty McFly Terminator T-1000 Robocop Nell'esempio seguente, useremo CONCAT() per concatenare l'ID e il nome degli utenti per formare un identificatore unico. Si noti che la funzione CAST() non è necessaria: SELECT CONCAT(id, '_', first_name) AS unique_id FROM users; Il risultato: unique_id --------------- 1_Derek 2_Marty 3_Terminator 4_Robocop La funzione CONCAT_WS La funzione CONCAT_WS in SQL è simile alla funzione CONCAT, ma viene utilizzata per concatenare due o più stringhe insieme a un separatore. La funzione accetta due argomenti: il primo è il separatore e gli altri sono le stringhe da concatenare. Tutti i database più diffusi, tranne Oracle e SQLite, accettano la funzione CONCAT_WS. Questa funzione ignora NULLs negli argomenti (oltre al separatore), anche per MySQL. Utilizziamo la funzione CONCAT_WS per concatenare i valori first_name e last_name con un separatore di spazi: SELECT CONCAT_WS(' ', first_name, last_name) AS full_name FROM users; Il risultato: full_name --------------- Derek Zoolander Marty McFly Terminator T-1000 Robocop Infine, proviamo a concatenare tre argomenti, separati da spazi: SELECT CONCAT_WS(' ', first_name, middle_name, last_name) AS full_name FROM users; Il risultato: full_name --------------- Derek Brent Zoolander Marty George McFly Terminator T-1000 Robocop Se volete saperne di più sulle funzioni SQL, vi consiglio di leggere l'articolo 5 funzioni SQL per la manipolazione delle stringhe di Marek Pankowski. Concatenare due colonne in SQL è facile! Spero che la lettura di questo articolo sia stata piacevole quanto lo è stata la mia stesura! Le differenze tra i dialetti di SQL sono sottili ed è sempre interessante saperne di più. Questo articolo vi ha incoraggiato a saperne di più su SQL? Non esitate! Il vostro viaggio nell'SQL è già iniziato bene, e LearnSQL.it contiene tutte le risorse e l'aiuto necessari per diventare un esperto di SQL. La padronanza di SQL è un'esperienza pratica: imparare i concetti è una cosa, ma scrivere buone query richiede pratica. Raccomando sinceramente il nostro Pratica su SQL che mette alla prova le vostre conoscenze di base di SQL e vi mostra dove dovete migliorare. Quindi, cosa state aspettando? Non limitatevi a concatenare colonne: imparate oggi stesso l'SQL! Tags: sql concatenation