19th Jun 2024 Tempo di lettura: 12 minuti Funzioni stringa SQL: Una panoramica completa Martyna Sławińska funzioni stringa sql manipolazione delle stringhe Indice Elenco delle funzioni stringa di SQL Funzioni di stringa SQL - Esempi Concatenazione con || Confronto con <, >, <=, >=, =, <>, != LIKE CONCAT() CONCAT_WS() SINISTRA() LUNGHEZZA() INFERIORE() LPAD() LTRIM() POSIZIONE() RIPETIZIONE() REPLACE() INVERSIONE() DESTRA() RPAD() RTRIM() SPLIT_PART() STRINGA_AGG() SOTTOSTRINGA() TRANSLATE() TRIM() SUPERIORE() Altre funzioni SQL 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ù: Come concatenare le stringhe in SQL. Come concatenare stringhe e valori NULL in SQL Server. 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ù: Come confrontare due stringhe in SQL. Come ordinare le stringhe in ordine alfabetico in SQL. 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ù: Come concatenare le stringhe in SQL. Come concatenare stringhe e valori NULL in SQL Server. 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ù: Come concatenare le stringhe in SQL. Come concatenare stringhe e valori NULL in SQL Server. 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ù: Come sostituire parte di una stringa in MySQL. Come sostituire parte di una stringa in SQL. Come sostituire parte di una stringa in T-SQL. 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ù: Come dividere una stringa in MySQL. Come dividere una stringa in Oracle. Come dividere una stringa in PostgreSQL. Come dividere una stringa in SQL Server. 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ù: Come estrarre una sottostringa da una stringa in Oracle o SQLite. Come estrarre le sottostringhe in PostgreSQL e MySQL. Come estrarre una sottostringa da una stringa in T-SQL. Una guida completa per lavorare con le sottostringhe in SQL. La funzione SQL substring in 5 esempi. 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! Tags: funzioni stringa sql manipolazione delle stringhe