Vai al contenuto principale

Funzioni stringa in SQL: guida per principianti

Scopri come usare le funzioni stringa di SQL per pulire ed elaborare i dati testuali in modo efficiente.
· 7 min leggi

Scopri con l'IA

Lavorare con database relazionali significa spesso gestire dati disordinati. Una delle sfide più comuni è pulire ed elaborare i dati testuali. Per fortuna, SQL offre potenti funzioni sulle stringhe che rendono questo processo molto più efficiente, facendoti risparmiare tempo e fatica.

In questo articolo esploreremo le funzioni stringa SQL più importanti che possono aiutarti a pulire e manipolare i dati testuali con facilità. Iniziamo!

Cosa sono le funzioni stringa in SQL?

Le funzioni stringa in SQL sono funzioni integrate che ci permettono di manipolare ed elaborare i dati testuali memorizzati in un database. Esempi comuni di campi testuali includono nomi, descrizioni e indirizzi.

Queste funzioni possono essere usate per svolgere un’ampia gamma di attività, tra cui:

  • Concatenare stringhe 
  • Formattare il testo
  • Estrarre parti di una stringa
  • Cercare e sostituire testo specifico all’interno di una stringa

Concatenare stringhe in SQL

Possiamo concatenare due o più stringhe usando la funzione concat():

SELECT CONCAT('Street Roma',', ','72',', ','Padova') AS full_address

Questo è l’output:

full_address           |
-----------------------+
Street Roma, 72, Padova|

Questa funzione è ampiamente usata per combinare informazioni fornite da colonne diverse, come nomi e indirizzi.

In alternativa, puoi anche usare la funzione CONCAT_WS():

SELECT CONCAT_WS(',','Street Roma','72','Padova') as full_address

Dalla sintassi, puoi notare che è più semplice ed efficiente nelle situazioni in cui vuoi combinare più di due colonne con lo stesso separatore.

Formattare il testo

Esistono diverse funzioni stringa SQL per sistemare il testo modificando il maiuscolo/minuscolo, rimuovendo spazi aggiuntivi e altre operazioni. Ogni funzione è elencata con la sua sintassi e la relativa descrizione.

Sintassi della funzione

Descrizione

LOWER(string)

Restituisce il testo con tutti i caratteri in minuscolo

UPPER(string)

Restituisce il testo con tutti i caratteri in maiuscolo

 TRIM(string, [character])

Rimuove per impostazione predefinita gli spazi bianchi sia a sinistra sia a destra della stringa; rimuove un carattere speciale se specificato

LTRIM(string, [character])

Rimuove per impostazione predefinita gli spazi bianchi a sinistra della stringa; rimuove un carattere speciale se specificato

RTRIM(string, [character])

Rimuove per impostazione predefinita gli spazi bianchi a destra della stringa; rimuove un carattere speciale se specificato

Ora vediamo alcuni esempi per capire come applicare queste funzioni. Immagina di avere indirizzi email con lettere maiuscole e la sigla dello stato in minuscolo, e di voler correggere il formato di queste colonne.

SELECT
		LOWER('[email protected]') AS email,
		UPPER('it') AS country

 Questo è il seguente output:

email              |country|
-------------------+-------+
anonymous@gmail.com|IT     |

Oltre a modificare il maiuscolo/minuscolo, può essere utile eliminare gli spazi bianchi all’inizio o alla fine delle stringhe. La funzione principale per questo tipo di operazione è TRIM() per rimuovere da entrambi i lati. Altre alternative sono LTRIM() e RTRIM() per eliminare rispettivamente gli spazi a sinistra e a destra:

SELECT  TRIM(' Street Roma, 72 ') AS trimmed_address,
	  LTRIM(' Street Roma, 72 ') AS ltrimmed_address,
	  RTRIM(' Street Roma, 72 ') AS rtrimmed_address

La query restituisce il seguente risultato:

trimmed_address|ltrimmed_address|rtrimmed_address|
---------------+----------------+----------------+
Street Roma, 72|Street Roma, 72 | Street Roma, 72|

Dall’output puoi cogliere le differenze tra ciascuna funzione. Inoltre, TRIM() può essere usata per rimuovere altri caratteri speciali, oltre agli spazi. Ad esempio, vogliamo pulire il campo del telefono eliminando il segno +:

SELECT TRIM('++345','+') AS telephone

L’output restituito è il seguente:

telephone|
---------+
345      |

Come puoi vedere, il numero di telefono è completamente pulito.

Estrarre testo

Dopo aver concatenato e modificato il formato delle stringhe, è il momento di scoprire come estrarre testo usando la funzione SQL speciale SUBSTRING(). Vediamo diversi esempi per padroneggiare questa funzione:

SELECT
		SUBSTRING('Antony',1,1) AS first_character, 
		SUBSTRING('Antony',1,3) AS first_3characters,
		SUBSTRING('Antony',1,5) AS first_5characters

Questo è l’output:

first_character|first_3characters|first_5characters|
---------------+-----------------+-----------------+
A              |Ant              |Anton            |

Possiamo anche combinare questa funzione con le precedenti per mettere in maiuscolo la prima lettera, convertire il resto in minuscolo e poi concatenare tutte le lettere:

SELECT
LENGTH('antony') AS lenght_name,
SUBSTRING(UPPER('antony'),1,1) AS first_character,
SUBSTRING(LOWER('antony'),2,LENGTH('antony')) AS  last_characters,
CONCAT(SUBSTRING(UPPER('antony'),1,1),SUBSTRING(LOWER('antony'),
      2,LENGTH('antony'))) AS name

Questa query restituisce il seguente risultato:

lenght_name|first_character|LAST_characters|name  |
-----------+---------------+---------------+------+
          6|A              |ntony          |Antony|

Oltre alle funzioni viste finora, puoi notare la funzione LENGTH() che aiuta a estrarre la lunghezza della stringa. In questo contesto, è utile per specificare l’indice dell’ultimo carattere.

Cercare e sostituire stringhe in SQL

Vediamo le funzioni principali per cercare e sostituire stringhe:

Sintassi della funzione

Descrizione

REPLACE(string,x,y)

Sostituisce il valore x nella stringa con il valore y

CHARINDEX(x,string)

Trova la posizione del valore x all’interno della stringa

Una funzione molto utile è REPLACE() per sostituire una sottostringa con un’altra all’interno della stringa:

SELECT
		'Street Roma - 32' AS address,
		replace('Street Roma - 32','-',',') AS cleaned_address

Questo è l’output:

address         |cleaned_address |
----------------+----------------+
Street Roma - 32|Street Roma , 32|

In questo caso, abbiamo semplicemente sostituito un trattino con una virgola all’interno dell’indirizzo. Possiamo anche provare a trovare la posizione del trattino all’interno dell’indirizzo:

SELECT
		'Street Roma - 32' AS address,
		LENGTH('Street Roma - 32') AS length_address,
		CHARINDEX('-','Street Roma - 32') AS location_dash

La query restituisce il seguente risultato:

address         |length_address|location_dash|
----------------+--------------+-------------+
Street Roma - 32|            16|           13|

Possiamo notare che il simbolo - si trova in posizione 13 dell’indirizzo, quasi alla fine della stringa.

Conclusione

Padroneggiare queste funzioni stringa SQL può fare la differenza nel pulire i dati in modo efficiente. Ovviamente, l’articolo non copre tutte le funzioni, ma solo un breve elenco delle più importanti. Non tutte le funzioni SQL sono sempre valide e possono variare a seconda del tipo di database che stai usando. Per esempio, CHARINDEX può essere sostituita da LOCATE() in un database MySQL. 

Per fare pratica con queste funzioni, dai un’occhiata al nostro Reporting in SQL Course. Può aiutarti a diventare un esperto nella pulizia dei dati e nella creazione di report complessi. Ti consigliamo anche il percorso di competenze SQL Fundamentals per coprire tutti gli aspetti essenziali di SQL.

Eugenia Anello

Autore

Eugenia Anello

Data Scientist - CRIF

Argomenti

Correlato