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

Funzioni stringa SQL: Una panoramica completa

Una rassegna di tutte le principali funzioni stringa di SQL, con definizioni ed esempi.

Le funzioni stringa SQL manipolano valori stringa (inclusi testo e alfanumerici). Conosciute anche come funzioni testo in SQL, le funzioni stringa accettano uno o più valori stringa come argomento e restituiscono un valore stringa modificato.

Date un'occhiata a questo corso interattivo su Funzioni SQL standard se volete fare più pratica di quanta ne comprenda questo articolo. Fornisce 211 esercizi sulle funzioniSQL numeriche, sulle funzioni stringa o testo, sulle funzioni data e ora e sulle funzioni aggregate. Completate gli esercizi per rivedere e consolidare le vostre conoscenze, poi mettetele alla prova con il quiz finale.

Passiamo ora alla panoramica delle funzioni stringa di SQL.

Elenco delle funzioni stringa di SQL

Importante: in SQL i valori delle stringhe sono racchiusi tra apici singoli, come in questo caso: 'this is a string'. Ma cosa succede se vogliamo includere un carattere di apice singolo nel valore della stringa? Consultate il nostro libro di ricette Come sfuggire alle virgolette singole in SQL per imparare a sfuggire ai caratteri speciali nelle stringhe SQL.

Nota: le funzioni delle stringhe SQL possono differire tra i vari motori di database. Di seguito sono elencate le funzioni disponibili nei database più diffusi, tra cui PostgreSQL, MySQL e SQL Server.

Function

Description

Further reading

|| (Concatenate)

→ Takes two or more strings.

← Concatenates (combines) them and returns the resulting string.

* How to concatenate strings in SQL

* How to concatenate string and NULL values in SQL Server

< (Less than)

 > (Greater than)

 <= (Less than or equal to)

>= (Greater than or equal to)

 = (Equals)

 <> , != (Does not equal)

→ Takes two strings.

← Compares them and returns a Boolean value.

* How to compare two strings in SQL

* How to order strings alphabetically in SQL

LIKE

→ Takes one string and one regex template.

← Compares them and returns a Boolean value.

* How to use LIKE in SQL

CONCAT()

→ Takes two or more strings.

← Concatenates them and returns the resulting string.

* How to concatenate strings in SQL

* How to concatenate string and NULL values in SQL Server

CONCAT_WS()

→ Takes a separator value and two or more strings.

← Concatenates them with the separator value in between and returns the resulting string.

* How to concatenate strings in SQL

* How to concatenate string and NULL values in SQL Server

LEFT()

→ Takes one string and one integer (x).

← Returns x characters, starting from the left (e.g. LEFT(5) returns the first 5 characters in the string).

 

LENGTH()

(SQL Server: LEN())

→ Takes one string.

← Returns the number of characters in the string.

* How to check the length of a string in SQL

LOWER()

→ Takes one string.

← Returns this string with all characters in lower case.

* How to convert a string to lowercase in SQL

LPAD()

(SQL Server equivalents available)

→ Takes a string, an integer, and another string.

← Pads the first string value (starting from the left) with repetitions of the second string value to make the length equal to the integer.

 

LTRIM()

→ Takes one string.

← Trims all white spaces from the left and returns the resulting string.

 

POSITION()

(SQL Server: CHARINDEX())

→ Takes two strings.

← Returns the position number at which the first string is present in the second string.

 

REPEAT()

(SQL Server: REPLICATE())

→ Takes a string and an integer (x).

← Returns a string that contains x string values (e.g. REPEAT('a', 3) returns 'aaa').

 

REPLACE()

→ Takes three strings.

← Returns the first string where the value of the second string is replaced by the third string (e.g. REPLACE('Hello world', 'Hello', 'Hi') returns 'Hi World').

* How to replace part of a string in MySQL

* How to replace part of a string in SQL

* How to replace part of a string in T-SQL

REVERSE()

→ Takes one string.

← Returns the reversed value of the string.

 

RIGHT()

→ Takes one string and one integer (x).

← Returns x characters from the right (e.g. RIGHT(5) returns the last 5 characters in the string).

 

RPAD()

(SQL Server equivalents available)

→ Takes a string, an integer, and another string.

← Pads the first string (starting from the right) with repetitions of the second string value to make the length equal to the integer.

 

RTRIM()

→ Takes one string.

← Trims all white spaces from the right and returns the resulting string.

 

SPLIT_PART()

(MySQL:  SUBSTRING_INDEX()

SQL Server: STRING_SPLIT())

→ Takes two strings and an integer.

← Splits the first string based on a separator provided in the second string and returns one part as indicated by the integer.

* How to split a string in MySQL

* How to split a string in Oracle

* How to split a string in PostgreSQL

* How to split a string in SQL Server

STRING_AGG()

(MySQL: GROUP_CONCAT())

→ Takes one column of a string type and one string.

← Returns all values from the column, separated by the string.

 

SUBSTRING()

→ Takes one string and two integers (x and y).

← Returns a substring consisting of the characters between the positions x and y.

* How to extract a substring from a string in Oracle or SQLite

* How to extract substrings in PostgreSQL and MySQL

* How to extract a substring from a string in T-SQL

* A complete guide to working with substrings in SQL

* The SQL substring function in 5 examples

TRANSLATE()

(Not available in MySQL)

→ Takes three strings.

← Returns the first string where each value from the 2nd string is replaced with each value from the 3rd string. TRANSLATE('Hello World', 'ol', 'ek') will replace each occurrence of 'o' with 'e' and each occurrence of 'l' with 'k', resulting in 'Hekke Werkd'.

 

 

TRIM()

→ Takes one string.

← Returns the string with leading and trailing white spaces removed.

* How to trim strings in SQL

UPPER()

→ Takes one string.

← Returns this string with all characters in upper case.

* How to convert a string to uppercase in SQL

Funzioni di stringa SQL - Esempi

Le sezioni seguenti presentano esempi per ciascuna funzione.

Concatenazione con ||

Questo operatore accetta due o più stringhe e restituisce il valore concatenato.

SELECT 'Hello' || ' World' AS concatenated;
concatenated
Hello World

Si noti che se un operando è nullo, il risultato è nullo:

concatenated
null

Leggete questi articoli per saperne di più:

Confronto con <, >, <=, >=, =, <>, !=

Questi operatori prendono due stringhe, le confrontano e restituiscono un valore booleano. Un valore booleano indica Vero (1) o Falso (0).

SELECT 'ABC' < 'XYZ' AS compare;
compare
1

Poiché ABC viene prima di XYZ nell'alfabeto, questa espressione è valutata come True. In SQL, i valori di testo vengono valutati in base al loro ordine alfabetico. È anche possibile vedere se le espressioni di stringa corrispondono (o meno):

SELECT 'ABC' = 'XYZ' AS compare;
compare
0

Leggete questi articoli per saperne di più:

LIKE

Questo operatore prende una stringa e un modello di regex, li confronta e restituisce un valore booleano. Utilizzeremo tre modelli regex:

  • A% significa "inizia con A e ha un numero qualsiasi di caratteri successivi". Add ACT e AbE corrispondono tutti a questa regex.
  • A_C significa "inizia con A, ha un carattere e poi finisce con C". AAC, abc, aDc e alC corrispondono a questa regex.
  • %h significa "finisce con h". With, twenty-fifth e aah corrispondono a questa regex.

Importante: sebbene la maggior parte dei principali dialetti di SQL non faccia distinzione tra maiuscole e minuscole, i modelli regex fanno distinzione tra maiuscole e minuscole; "A" e "a" sono due caratteri diversi nelle regex.

SELECT 'ABC' LIKE 'A%' AS compare;
compare
1
SELECT 'ABC' LIKE 'A_C' AS compare;
compare
1
SELECT 'Hello' LIKE '%H' AS compare;
compare
0

Consultate questo articolo per imparare a usare LIKE in SQL.

CONCAT()

Questa funzione prende due o più stringhe, le concatena (cioè le unisce in un'unica stringa) e restituisce la stringa risultante.

SELECT CONCAT('Hello', ' World', '!') AS concat;
concat
Hello World!

Si noti che questa funzione ignora i valori nulli, a differenza dell'operatore ||:

SELECT CONCAT('Hello', null, '!') AS concat;
concat
Hello!

Leggete questi articoli per saperne di più:

CONCAT_WS()

Questa funzione prende un valore separatore e due o più stringhe, le concatena con il valore separatore in mezzo e restituisce la stringa risultante.

SELECT CONCAT_WS('_','Hello', 'World') AS concat_ws;
concat_ws
Hello_World

Si noti che questa funzione ignora i valori nulli, a differenza dell'operatore ||.

SELECT CONCAT_WS('_','Hello', null, 'World') AS concat_ws;
concat_ws
Hello_World

Leggete questi articoli per saperne di più:

SINISTRA()

Questa funzione accetta una stringa e un numero intero. Partendo dall'inizio (la sinistra), restituisce il numero di caratteri indicato dall'intero.

SELECT LEFT('Hello', 2) AS left;
left
He

LUNGHEZZA()

Questa funzione prende una stringa e restituisce il numero di caratteri in essa contenuti.

SELECT LENGTH('Hello') AS length;
length
5

Si noti che SQL Server utilizza LEN() invece di LENGTH().

Consultate questo articolo per sapere come verificare la lunghezza di una stringa in SQL.

INFERIORE()

Questa funzione prende una stringa e la restituisce con tutti i caratteri in minuscolo.

SELECT LOWER('Hello') AS lower;
lower
hello

Consultate questo articolo per sapere come convertire una stringa in minuscolo in SQL.

LPAD()

Questa funzione accetta una stringa, un intero e un'altra stringa. Partendo dall'inizio (a sinistra), imbottisce il primo valore della stringa con ripetizioni del secondo valore della stringa per rendere la lunghezza uguale all'intero.

SELECT LPAD('Hello', 9, 'ABC') AS lpad;
lpad
ABCAHello

Si noti che SQL Server non fornisce questa funzione. Si vedano gli equivalenti disponibili in SQL Server.

LTRIM()

Questa funzione prende una stringa, taglia tutti gli spazi bianchi da sinistra e restituisce la stringa risultante.

SELECT LTRIM('   Hello World   ') as ltrim;
ltrim
Hello World

Gli spazi bianchi sul lato destro della stringa non vengono toccati.

POSIZIONE()

Questa funzione prende due stringhe e restituisce il numero di posizione in cui la prima stringa è presente nella seconda.

SELECT POSITION('Wo' IN 'Hello World') as position;
position
7

Si noti che SQL Server utilizza CHARINDEX() invece di POSITION().

RIPETIZIONE()

Questa funzione accetta una stringa e un numero intero. Restituisce una stringa che contiene tante ripetizioni della prima stringa quante ne indica l'intero.

SELECT REPEAT('Hi', 3) as repeat;
repeat
HiHiHi

Si noti che SQL Server utilizza REPLICATE() invece di REPEAT().

REPLACE()

Questa funzione prende tre stringhe e restituisce la prima stringa in cui il valore indicato dalla seconda stringa è sostituito dalla terza stringa.

SELECT REPLACE('Hello World', 'Hello', 'Hi') as replace;
replace
Hi World

Leggete questi articoli per saperne di più:

INVERSIONE()

Questa funzione prende una stringa e restituisce il valore invertito della stringa.

SELECT REVERSE('Hello') as reverse;
reverse
olleH

DESTRA()

Questa funzione accetta una stringa e un numero intero. Partendo dalla fine della stringa (la destra), restituisce tanti caratteri quanti ne indica l'intero.

right
lo

RPAD()

Questa funzione prende una stringa, un intero e un'altra stringa. Partendo dalla fine della stringa (a destra), imbottisce la prima stringa con ripetizioni della seconda stringa per rendere la lunghezza uguale all'intero.

SELECT RPAD('Hello', 9, 'ABC') AS rpad;
rpad
HelloABCA

Si noti che SQL Server non fornisce questa funzione. Si vedano gli equivalenti disponibili in SQL Server.

RTRIM()

Questa funzione prende una stringa, taglia tutti gli spazi bianchi dalla fine e restituisce la stringa risultante.

SELECT RTRIM('   Hello World   ') as rtrim;
rtrim
Hello World

Si noti che gli spazi bianchi all'inizio (a sinistra) della stringa non vengono toccati.

SPLIT_PART()

Questa funzione accetta due stringhe e un numero intero. Divide la prima stringa in base al separatore fornito nella seconda stringa e restituisce la parte indicata dall'intero. Il codice seguente divide 'Hello World' per lo spazio e restituisce la prima parte della stringa divisa:

SELECT SPLIT_PART('Hello World', ' ', 1) AS part;
part
Hello

Facciamo la stessa cosa, ma questa volta cambiamo il numero intero in 2. Questo restituirà la seconda parte della stringa:

SELECT SPLIT_PART('Hello World', ' ', 2) AS part;
part
World

Si noti che MySQL utilizza SUBSTRING_INDEX() invece di SPLIT_PART().

Si noti che SQL Server utilizza STRING_SPLIT() invece di SPLIT_PART().

Leggete questi articoli per saperne di più:

STRINGA_AGG()

Questa funzione accetta una colonna di tipo stringa e una stringa. Restituisce la concatenazione di tutti i valori della colonna; ogni valore è separato dagli altri dalla stringa. Si tratta di una funzione di aggregazione che può essere utilizzata con GROUP BY.

Questa è la tabella dei frutti che utilizzeremo in questo esempio:

nameamount
Apple1
Kiwi2
Banana3
SELECT STRING_AGG(name, ';') AS string_agg
FROM fruits;
string_agg
Apple;Kiwi;Banana

Si noti che MySQL utilizza GROUP_CONCAT() invece di STRING_AGG().

SOTTOSTRINGA()

Questa funzione accetta una stringa e due numeri interi. Restituisce una sottostringa composta dai caratteri compresi tra le posizioni indicate dai numeri interi.

SELECT SUBSTRING('Hello World', 2, 5) AS substring;
substring
ello

Leggete questi articoli per saperne di più:

TRANSLATE()

Questa funzione prende tre stringhe e restituisce la prima stringa in cui i valori indicati dalla seconda stringa sono sostituiti dai valori indicati dalla terza stringa.

SELECT TRANSLATE('Hello World', 'Ho', 'he') as translate;

Questo esempio prende un dato valore di stringa e sostituisce H con h e o con e.

translate
helle Werld
SELECT TRANSLATE('abc def', 'ad', 'xy') as translate;

L'esempio precedente prende un dato valore di stringa e sostituisce a con x e d con y.

translate
xbc yef

Si noti che MySQL non fornisce questa funzione. Verificate alcuni equivalenti disponibili in MySQL.

TRIM()

Questa funzione prende una stringa e la restituisce con la rimozione degli spazi bianchi iniziali e finali.

SELECT TRIM('   Hello World   ') AS trim;
trim
Hello World

Consultate questo articolo per imparare a tagliare le stringhe in SQL.

SUPERIORE()

Questa funzione prende una stringa e la restituisce con tutti i caratteri in maiuscolo.

SELECT UPPER('Hello') AS upper;
upper
HELLO

Consultate questo articolo per sapere come convertire una stringa in maiuscolo in SQL.

Altre funzioni SQL

SQL offre molte funzioni diverse: funzioni numeriche, funzioni aggregate, funzioni di stringa, funzioni di data e ora e altre ancora. Per ulteriori informazioni, consultate il nostro ricettario SQL e i nostri articoli sul blog.

Inoltre, date un'occhiata a questo foglio informativo gratuito di Funzioni SQL standard. Potete scaricarlo, stamparlo e tenerlo a portata di mano mentre lavorate e imparate. Ancora una volta, vi invitiamo a consultare il nostro corso su Funzioni SQL standard se volete davvero fare un po' di pratica. Buon apprendimento!