Una stringa, in informatica, รจ un insieme di caratteri alfanumerici. Puรฒ rappresentare ad esempio un nome, un indirizzo, un numero di telefono o ancora molti altri tipi di dato. Si tratta quindi di un tipo di dato estremamente flessibile grazie al quale archiviare la piรน ampia varietร dโinformazioni.
Questo tipo di dato, ovviamente, รจ diffusamente utilizzato allโinterno di database. Proprio a sottolineare lโimportanza di questa tipologia di dato, notiamo come uno tra i piรน popolari programmi di gestione database (DBMS, DataBase Management System) cioรจ Microsoft SQL Server metta a disposizione una serie di funzioni specificamente dedicate a trattare dati di tipo stringa (detti anche insiemi di caratteri di lunghezza variabile, o varchar):
- LEN
- LOWER/UPPER
- LTRIM/RTRIM
- ASCII
- CHAR
- NCHAR
- UNICODE
- STR
- CHARINDEX
- PATINDEX
- SOUNDEX
- DIFFERENCE
- LEFT/RIGHT
- QUOTENAME
- REPLACE
- REPLICATE
- REVERSE
- SPACE
- STUFF
- SUBSTRING
Usiamo la funzione LEN per conoscere la lunghezza della stringa passata come parametro, compresi gli spazi. Cosรฌ, ad esempio, lโesecuzione di:
SELECT LEN('Stringa di prova')
ha come risultato 16.
Le funzioni LOWER e UPPER
Possiamo servirci delle funzioni LOWER e UPPER per la gestione delle minuscole e delle maiuscole. Entrambe accettano una stringa come unico parametro in ingresso.
La funzione LOWER restituisce una stringa uguale a quella passata, ma in cui le lettere maiuscole sono sostituite dalle corrispondenti minuscole, mentre la funzione UPPER effettua il processo inverso, trasformando le minuscole in maiuscole. Cosรฌ, ad esempio, eseguendo le funzioni:
SELECT LOWER('Stringa di prova')
SELECT UPPER('Stringa di prova')
i risultati sono, rispettivamente:
'stringa di prova'
'STRINGA DI PROVA'
Le funzioni LTRIM e RTRIM
Le funzioni LTRIM e RTRIM hanno come scopo di eliminare gli spazi allโinizio (LTRIM) o alla fine (RTRIM) della stringa passata come parametro. Immaginiamo di dichiarare in questo modo una variabile doc di tipo varchar:
DECLARE @doc varchar(64)
SELECT @doc=' Frase con spazi '
Applichiamo ora le funzioni LTRIM e RTRIM alla variabile doc:
SELECT LTRIM(@doc)
SELECT RTRIM(@doc)
I risultati sono:
'Frase con spazi '
' Frase con spazi'
La funzione ASCII
La codifica ASCII associa ad uno specifico carattere un numero intero. Tramite la funzione ASCII รจ possibile sapere quale sia il valore ASCII associato al primo carattere allโinterno di una stringa (anchโessa passata come parametro). Ad esempio lโutilizzo della funzione:
SELECT ASCII ('esecuzionediprova')
avrebbe come risultato 101, che corrisponde infatti alla codifica ASCII del carattere โeโ.
La funzione CHAR
La funzione CHAR consente invece il passaggio inverso rispetto a quello appena illustrato per la funzione ASCII: tramite tale funzione infatti, il numero che rappresenta la codifica ASCII di un carattere puรฒ essere convertito nel carattere stesso. Cosรฌ lโesecuzione di:
SELECT CHAR ('101')
ha come risultato โeโ. Queste due funzioni garantiscono quindi la possibilitร di trattare dati di tipo char e insiemi di dati di tipo char (quindi stringhe) anche come numeri interi e insiemi di numeri interi, con la piena possibilitร di convertire le informazioni da un tipo di dato allโaltro, secondo lโoccorrenza.
La funzione NCHAR
Anche la funzione NCHAR, cosรฌ come ASCII e CHAR, consente di stabilire una corrispondenza tra caratteri e numeri interi. La funzione NCHAR perรฒ, a differenza delle precedenti, si serve della codifica Unicode, piรน complessa e completa rispetto alla codifica ASCII.
Tramite la funzione NCHAR รจ possibile individuare il carattere associato al numero Unicode (compreso tra 0 e 65535, mentre la codifica ASCII spazia solo da 0 a 255, garantendo dunque un minor numero di simboli rappresentabili) passato come parametro. Ad esempio:
SELECT NCHAR(248)
ha come risultato โรธโ.
La funzione UNICODE
La funzione UNICODE consente il passaggio inverso rispetto a quello appena illustrato relativamente a NCHAR. La funzione ha come valore di ritorno la codifica Unicode corrispondente al primo carattere dellโespressione fornita in input. Lโesecuzione di:
SELECT UNICODE('ร
kergatan')
ha come risultato 197, che corrisponde infatti al simbolo ร
.
La funzione STR
Anche la funzione STR si inserisce nellโambito delle conversioni tra dati di tipo numerico e dati di tipo stringa. In particolare, consente di convertire un numero (intero o con virgola) in una stringa che ne rappresenti il valore, specificando la lunghezza della stringa stessa. Ad esempio eseguiamo la funzione:
SELECT STR(148.81,5,1)
Tale funzione converte il numero 148.81 (primo parametro) in una stringa di 5 caratteri (secondo parametro) con una cifra decimale (terzo parametro, opzionale). Il risultato รจ infatti la stringa:
'148.8'
Se il numero di caratteri disponibili non รจ sufficiente, il valore di ritorno della funzione รจ โ**โ, per segnalare il problema.
La funzione CHARINDEX
Tramite CHARINDEX รจ possibile cercare una certa stringa allโinterno di unโaltra stringa. Immaginiamo ad esempio di dichiarare la variabile:
DECLARE @doc varchar(64)
SELECT @doc='Frase di prova'
A questo punto decidiamo di cercare lโespressione โdiโ allโinterno della variabile doc appena dichiarata:
SELECT CHARINDEX('di', @doc)
Il valore di ritorno della funzione sarebbe in questo caso:
7
Ciรฒ significa che lโespressione โdiโ si trova nella stringa doc e che comincia a partire dal settimo carattere. Si puรฒ anche passare alla funzione CHARINDEX un parametro opzionale, detto start_location, di tipo numero intero. Questo parametro consente di specificare da quale posizione della stringa in poi si desidera valutare la presenza o meno dellโespressione cercata.
La funzione PATINDEX
Anche la funzione PATINDEX consente di individuare la posizione iniziale di una specifica serie di caratteri allโinterno di unโespressione. A differenza di CHARINDEX perรฒ, le espressioni cercate possono contenere anche caratteri speciali, detti โwildcard charactersโ.
In particolare, รจ possibile servirsi del carattere โ_โ (underscore) per indicare โun qualsiasi carattereโ. Cosรฌ per cercare unโespressione di tipo โrโ seguita da un carattere qualsiasi e poi da โvโ allโinterno di doc (variabile che immaginiamo essere stata dichiarata cosรฌ come in CHARINDEX), si potrร utilizzare la funzione:
SELECT PATINDEX('%r_v%', @doc)
I simboli โ%โ sono necessari per questa funzione (a differenza di CHARINDEX) per delimitare gli estremi dellโespressione da cercare. Qualora si omettesse il simbolo โ%โ piรน a sinistra in โ%r_v%โ lโespressione verrebbe trovata soltanto se corrispondente ai primi caratteri di doc. Se si omettesse invece il secondo simbolo โ%โ verrebbero valutati solo gli ultimi caratteri. Il risultato della funzione appena presentata รจ:
11
La funzione SOUNDEX
Ci possiamo servire della funzione SOUNDEX per associare ad una stringa, passata come parametro, un codice di 4 caratteri. Come vedremo in seguito, trattando la funzione DIFFERENCE, tale codice puรฒ essere utilizzato, ad esempio, per valutare quanto due stringhe siano simili. Eseguendo, ad esempio, la funzione:
SELECT SOUNDEX('Ciao')
abbiamo come output il codice C000.
La funzione DIFFERENCE
DIFFERENCE consente di confrontare due stringhe fornendo una misura di โsomiglianzaโ tra le stesse. In particolare viene rappresentata la differenza tra i valori delle funzioni SOUNDEX (giร trattata in precedenza) associati alle stringhe.
La misura viene espressa con un numero intero: 4 rappresenta la massima somiglianza possibile, 1 la minima. Cosรฌ ad esempio il valore di ritorno della funzione:
SELECT DIFFERENCE('verde','verdi')
avrร come risultato 4, mentre lโesecuzione di:
SELECT DIFFERENCE('verde','blu')
porterร ad un valore di ritorno di 1.
Le funzioni LEFT e RIGHT
Possiamo usare la funzione LEFT per estrarre la parte sinistra di una stringa, cosรฌ come la funzione RIGHT consente invece di estrarre una sottostringa destra. Oltre alla stringa di riferimento, รจ necessario passare alla funzione un altro parametro intero, che determina la dimensione della sottostringa da estrarre. Cosรฌ ad esempio il codice:
@decalre doc varchar(64)
SELECT @doc='Frase di prova'
SELECT LEFT(@doc,8)
SELECT RIGHT(@doc,4)
avrebbe come risultati:
'Frase di' (risultato della chiamata alla funzione LEFT)
'rova' (risultato della chiamata alla funzione RIGHT)
La funzione QUOTENAME
Possiamo servirci della funzione QUOTENAME per inserire su una stringa caratteri che ne delimitano in modo esplicito inizio e fine. Se non specificato diversamente (attraverso un parametro opzionale) il carattere di inizio stringa sarร โ[โ e quello di fine stringa โ]โ. Cosรฌ ad esempio eseguendo:
SELECT QUOTENAME('abcde')
avremo come output
'[abcde]'
La funzione REPLACE
Con la funzione REPLACE รจ possibile sostituire tutte le occorrenze di una specifica espressione con unโaltra espressione (entrambe sono passate come parametro, cosรฌ come la stringa allโinterno della quale viene effettuata la ricerca). Per sostituire lโespressione โperโ con lโespressione โconโ in โFrase di prova per sostituzioniโ possiamo usare la funzione:
SELECT REPLACE('Frase di prova per sostituzioni', 'per', 'con')
E la stringa sarร trasformata in:
'Frase di prova con sostituzioni'
La funzione REPLICATE
La funzione REPLICATE consente di ripetere una certa espressione per uno specificato numero di volte. I due parametri in ingresso alla funzione sono dunque la stringa da ripetere e il numero intero di ripetizioni desiderate. Cosรฌ, ad esempio, per ripetere la stringa โProvaโ per 100 volte, possiamo eseguire la funzione:
SELECT REPLICATE('Prova', 100)
La funzione REVERSE
Con la funzione REVERSE otteniamo, data in ingresso una stringa, quella stessa stringa letta da destra a sinistra. Ad esempio lโesecuzione di:
SELECT REVERSE('Prova')
ha come risultato:
'avorP'
La funzione SPACE
La funzione SPACE ha come valore di ritorno una stringa costituita da uno specificato numero di spazi vuoti. Lโunico parametro in ingresso rappresenta il numero di spazi vuoti desiderato. Per generare una stringa di 100 spazi vuoti รจ sufficiente usare la funzione:
SELECT SPACE(100)
La funzione STUFF
Posssiamo utilizzare la funzione STUFF per inserire unโespressione composta da caratteri allโinterno di unโaltra espressione. I parametri da passare alla funzione sono 4: oltre ai due insiemi di caratteri infatti, vanno anche specificati, tramite due numeri interi, il punto in cui รจ necessario effettuare la sostituzione e quanti caratteri della stringa originale devono essere eliminati. Valutiamo un esempio di esecuzione della funzione STUFF:
SELECT STUFF('Prova', 2, 2, 'abcde')
Il risultato รจ:
'Pabcdeva'
La funzione SUBSTRING
La funzione SUBSTRING ha come valore di ritorno una sottostringa dellโespressione passata come parametro. Devono essere forniti in input alla funzione anche due numeri interi che definiscono il primo carattere della sottostringa da estrarre e la sua lunghezza. Eseguiamo ad esempio la funzione:
SELECT SUBSTRING('Estrarre la sottostringa', 3, 9)
Il risultato sarร allora:
'trarre la'