Torna all'elenco degli articoli Articoli
Tempo di lettura: 7 minuti

Panoramica delle funzioni di testo SQL

In questo articolo illustreremo i dettagli delle funzioni di testo SQL più comuni, che consentono di trovare e lavorare sui valori delle stringhe.

Prima di addentrarci nelle funzioni di testo, ricapitoliamo rapidamente cos'è una funzione SQL. In parole povere, una funzione è un pezzo di codice predefinito che può essere utilizzato nelle query SQL. Ad esempio, le funzioni SUM(), AVG() e COUNT() sono applicate a variabili numeriche per calcolare rispettivamente la somma, la media e il numero di record.

Utilizzeremo la seguente tabella OrderDetails del noto database Northwind per dimostrare come funziona la funzione SUM().

OrderDetailIDOrderIDProductIDQuantity
1102481112
2102484210
310248725
410249149
5102495140
518104432812

L'obiettivo è restituire il totale di Quantity ordinato in tutti i 518 ordini.

DOMANDA:

SELECT SUM(Quantity) AS Total_Ordered_Quantity
FROM OrderDetails

RISULTATO:

Numero di record: 1

Total_Ordered_Quantity
12743

Nell'esempio precedente, la funzione SUM() è stata utilizzata per calcolare il totale di tutte le quantità ordinate. Gli argomenti (o parametri) della funzione sono definiti all'interno delle parentesi. Secondo la sintassi SQL, le parentesi sono necessarie anche quando non vengono inseriti parametri nella funzione.

Funzioni di testo in SQL

I database sono dotati di molte funzioni integrate. Pertanto, è importante conoscere le funzioni più comunemente utilizzate per poter scrivere query in modo efficace ed efficiente, senza dover creare da zero le proprie funzioni definite dall'utente. LearnSQL.it's Standard SQL Functions coprono tutte le più comuni funzioni testuali, numeriche, di data e ora e aggregate, utilizzando esempi pratici dettagliati, spiegazioni ed esercizi.

In questo articolo esamineremo alcune delle funzioni di testo SQL più utilizzate . Esse operano su tipi di dati di testo come VARCHAR, CHAR e TEXT.

Si noti che database diversi hanno funzioni integrate diverse. In questo articolo ci concentreremo solo sulle funzioni SQL standard, che funzionano per la maggior parte dei database compatibili con SQL. (Per gli esempi riportati di seguito, utilizzeremo la tabella Customers dello stesso database Northwind.

CustomerIDCustomerNameContactNameAddressCityPostal Code
1102481112
Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DP

CHAR_LENGTH()

La funzione CHAR_LENGTH() restituisce il numero di caratteri di una stringa. Questa funzione è raramente utilizzata da sola; di solito la si trova insieme ad altre funzioni.

Se la stringa di input è vuota, CHAR_LENGTH() restituisce 0. Se la stringa di input è NULL, restituisce il numero di caratteri. Se la stringa di input è NULL, la funzione restituisce NULL. La sintassi è abbastanza semplice: basta inserire il nome della colonna in questione tra le parentesi.

Vediamo di seguito un esempio in cui si calcola la lunghezza della stringa per ciascuno dei record della colonna CustomerName della tabella Customers della tabella.

DOMANDA:

DOMANDA:

SELECT CHAR_LENGTH(CustomerName) 
FROM Customers;

RISULTATO:

Numero di record: 91

19
34
23
15

Si noti che nei risultati mostrati sopra, la lunghezza della stringa include gli spazi tra le parole (cioè tra il nome, il centro e il cognome).

SUPERIORE() e INFERIORE()

Le funzioni UPPER() e LOWER() convertono ogni lettera di una stringa definita in caratteri maiuscoli o minuscoli. Queste funzioni di testo sono spesso utilizzate per la pulizia dei dati o per preparare i dati per le fasi successive. Ad esempio, la funzione REPLACE() è sensibile alle maiuscole e alle minuscole, quindi è necessario convertire le stringhe nello stesso caso del testo dei criteri perché REPLACE() funzioni.

La sintassi generale di entrambe le funzioni è abbastanza semplice; ancora una volta, il nome della colonna va all'interno delle parentesi. Proviamo a convertire in maiuscolo tutti i record della colonna Città.

DOMANDA:

SELECT UPPER(City) as CITY 
FROM Customers;

RISULTATO:

Numero di record: 91

CITY
BERLIN
MEXICO D.F.
MEXICO D.F.
LONDON

La sintassi e l'applicazione di LOWER() sono esattamente le stesse di UPPER().

Infine, se un valore dato è NULL, la funzione restituisce un NULL.

SOTTRAZIONE()

La funzione SUBSTRING() estrae una sottostringa (cioè una parte di una stringa) all'interno di una stringa. Parte da una posizione specificata ed estrae una sottostringa di lunghezza specificata.

La sintassi generale della funzione SUBSTRING() è:

SUBSTRING(string, start, length)
  • La stringa.
  • La posizione (la prima posizione è 1) per iniziare l'estrazione.
  • La lunghezza (cioè il numero di caratteri) da restituire.

Si noti che tutti i parametri sono obbligatori.

Se il parametro posizione o lunghezza è NULL, viene restituito un NULL. Se il parametro inizio è maggiore della lunghezza della stringa (ad esempio, la stringa è "APPLE" e il parametro inizio è 10), la funzione restituisce una stringa di lunghezza zero. Se il parametrolunghezza è un valore negativo, si otterrà un errore e la query non verrà eseguita. Se il totale dei parametri lunghezza e inizio è maggiore della lunghezza della stringa, la funzione restituisce l'intera stringa.

Vediamo un esempio in cui si estraggono i primi 5 caratteri di ogni record della colonna CustomerName:

QUERY:

SELECT SUBSTRING(CustomerName, 1, 5) AS ExtractName
FROM Customers

RISULTATO:

Numero di record: 91

ExtractName
Alfre
Ana T
Anton
Aroun

SOSTITUIRE()

La funzione REPLACE() trova e sostituisce tutte le occorrenze di una sottostringa (all'interno di una determinata stringa) con una nuova sottostringa. Si noti che la parte di ricerca della funzione è sensibile alle maiuscole e alle minuscole.

La sintassi generale della funzione REPLACE() è ...

REPLACE(string, old_string, new_string)

... dove stringa è la stringa (o il nome della colonna) da cercare, vecchia_stringa è l'insieme di caratteri da sostituire e nuova_stringa è la sostituzione.

Vediamo un esempio che sostituisce l'abbreviazione "Str" con "Via" nella colonna Indirizzo.

DOMANDA:

SELECT REPLACE(Address, 'Str.', 'Street') as Address 
FROM Customers;

RISULTATO:

Numero di record: 91

Address
Obere Street 57
Avda. de la Constitución 2222
Mataderos 2312
120 Hanover Sq.

Nell'esempio precedente, stiamo sostituendo "Str.", la vecchia stringa, con "Via", la nuova stringa, nella colonna Address. Sostituzioni di questo tipo vengono spesso effettuate durante la pulizia dei dati per renderli più coerenti per le analisi successive.

Se il parametro new_string è NULL, anche REPLACE() restituisce NULL. Se il parametro old_string non viene trovato, non viene sostituito nulla; la stringa viene restituita nella sua forma originale, senza sostituzione.

TRIM()

La funzione TRIM() rimuove gli spazi iniziali e finali (o altri caratteri specificati come parametro opzionale) dall'inizio e/o dalla fine di una stringa. In genere viene utilizzata per rimuovere i caratteri o gli spazi non necessari da un set di dati prima dell'analisi.

La sintassi generale della funzione TRIM() è la seguente:

TRIM([‘TrimCharacters’ FROM] string)

Qui, TrimCharacters (il parametro opzionale) è il carattere o i caratteri da rimuovere dalla stringa. Se non viene specificato, SQL rimuove gli spazi iniziali e finali dalla stringa.

Nell'esempio che segue, si applica la funzione TRIM() alla colonna Address. In questo set di dati, le voci sono già abbastanza pulite. Ma vediamo come funziona la funzione TRIM() se specifichiamo che tutte le cifre numeriche devono essere tagliate.

DOMANDA:

SELECT TRIM('0123456789' FROM Address) As Trimmed_Address 
From Customers

RISULTATO:

Numero di record: 91

Trimmed_Address
Obere Str.
Avda. de la Constitución
Mataderos
Hanover Sq.

Si può notare che tutti i numeri sono stati tagliati sia all'inizio che alla fine di ogni indirizzo. Ciascuno dei caratteri specificati nella funzione TRIM() all'interno di TrimCharacters viene trattato e tagliato singolarmente. Inoltre, una volta tagliati i caratteri definiti, vengono tagliati anche gli spazi iniziali e finali. Ad esempio, per Hanover Square, '120' viene tagliato dall'estremità iniziale, mentre per Avda. De la Constitución, "2222" viene tagliato dall'estremità finale.

La funzione TRIM() è un modo semplice per combinare le funzionalità delle funzioni LTRIM() e RTRIM(), che rimuovono rispettivamente gli spazi iniziali e finali. Per una descrizione dettagliata, consultare Come rimuovere gli spazi iniziali e/o finali da una stringa in T-SQL.

Come utilizzare le funzioni di testo SQL

Spero che questi esempi di funzioni testuali SQL di uso comune vi abbiano aiutato a comprenderle. Gli analisti di dati e gli sviluppatori utilizzano spesso le funzioni di testo e la loro padronanza è una componente fondamentale del loro repertorio SQL.

Il modo migliore per padroneggiare le funzioni SQL è la pratica! Vi invito a imparare utilizzando esempi pratici come quelli del nostro corso. Standard SQL Functions corso. Se volete specializzarvi nei dialetti PostgreSQL e T-SQL, consultate i nostri corsi Common Functions in PostgreSQL e Common Functions in MS SQL Server.