Guida PL/pgSQL: Utilizzo della Funzione di Concatenazione

In PL/pgSQL, che è il linguaggio procedurale di PostgreSQL, la concatenazione di stringhe può essere effettuata utilizzando diversi metodi. Si possono usare l'operatore di concatenazione ||, la funzione CONCAT(), e la funzione CONCAT_WS(). Queste funzioni sono utili per combinare più stringhe in una singola stringa.

1. Operatore di Concatenazione ||

L'operatore || è utilizzato per concatenare due o più stringhe in PL/pgSQL.

Sintassi


stringa1 || stringa2 || ... || stringaN
    

Esempio di Utilizzo in PL/pgSQL

Concatenare due variabili di stringa all'interno di una funzione PL/pgSQL:


DO $$
DECLARE
    nome VARCHAR := 'Mario';
    cognome VARCHAR := 'Rossi';
    nome_completo VARCHAR;
BEGIN
    nome_completo := nome || ' ' || cognome;
    RAISE NOTICE 'Nome completo: %', nome_completo;
END $$;
    

Questo blocco PL/pgSQL concatena le variabili nome e cognome, separandole con uno spazio, e mostra il risultato utilizzando RAISE NOTICE.

2. Funzione CONCAT()

La funzione CONCAT() accetta uno o più argomenti e restituisce una stringa che è la concatenazione degli argomenti. Gestisce automaticamente i valori NULL come stringhe vuote.

Sintassi


CONCAT(stringa1, stringa2, ..., stringaN)
    

Esempio di Utilizzo in PL/pgSQL

Concatenare più valori insieme all'interno di una funzione PL/pgSQL:


DO $$
DECLARE
    nome VARCHAR := 'Maria';
    cognome VARCHAR := 'Bianchi';
    nome_completo VARCHAR;
BEGIN
    nome_completo := CONCAT(nome, ' ', cognome);
    RAISE NOTICE 'Nome completo: %', nome_completo;
END $$;
    

Questa funzione CONCAT() produce lo stesso risultato dell'operatore ||, ma gestisce i valori NULL in modo sicuro.

3. Funzione CONCAT_WS()

La funzione CONCAT_WS() (che sta per "concatenate with separator") è simile a CONCAT(), ma consente di specificare un separatore che viene inserito tra ogni stringa concatenata.

Sintassi


CONCAT_WS(separatore, stringa1, stringa2, ..., stringaN)
    

Esempio di Utilizzo in PL/pgSQL

Concatenare stringhe con un separatore specifico:


DO $$
DECLARE
    nome VARCHAR := 'Lucia';
    cognome VARCHAR := 'Verdi';
    città VARCHAR := 'Roma';
    dettagli VARCHAR;
BEGIN
    dettagli := CONCAT_WS(', ', nome, cognome, città);
    RAISE NOTICE 'Dettagli: %', dettagli;
END $$;
    

Questa funzione CONCAT_WS() concatenerà le variabili nome, cognome e città, separando ciascun valore con una virgola e uno spazio, e mostrerà il risultato.

4. Gestione dei Valori NULL

In PL/pgSQL, quando si utilizzano concatenazioni con l'operatore ||, se uno degli argomenti è NULL, l'intera concatenazione restituisce NULL. Tuttavia, utilizzando CONCAT() o CONCAT_WS(), i valori NULL vengono trattati come stringhe vuote (per CONCAT()) o vengono ignorati (per CONCAT_WS()).

Esempio di Gestione di NULL


DO $$
DECLARE
    nome VARCHAR := 'Giulia';
    cognome VARCHAR := NULL;
    nome_completo VARCHAR;
BEGIN
    nome_completo := nome || ' ' || cognome;  -- Questo sarà NULL
    RAISE NOTICE 'Nome completo con NULL (||): %', nome_completo;
    
    nome_completo := CONCAT(nome, ' ', cognome);  -- Questo sarà "Giulia "
    RAISE NOTICE 'Nome completo con NULL (CONCAT): %', nome_completo;
END $$;
    

Conclusione

In PL/pgSQL, la concatenazione di stringhe è una tecnica essenziale per combinare valori di testo da diverse variabili o colonne. È possibile scegliere tra l'operatore ||, la funzione CONCAT() o la funzione CONCAT_WS() per ottenere il risultato desiderato, soprattutto considerando come gestire i valori NULL durante la concatenazione.