Funzione Substring() in SQL Server: come usarla con un esempio.
โก Riepilogo intelligente
SUBSTRING() in SQL Server extracts una porzione di un carattere, testo o espressione binaria, restituendo un numero predefinito di caratteri a partire da una posizione iniziale scelta, e si abbina naturalmente a CHARINDEX per l'analisi sintattica basata su delimitatori.

Cos'รจ la sottostringa()?
SUBSTRING() รจ una funzione in SQL che consente all'utente di ricavare una sottostringa da qualsiasi stringa data in base alle necessitร . SUBSTRING() es.tracSUBSTRING() restituisce una stringa di lunghezza specificata, a partire da una determinata posizione all'interno di una stringa di input. Lo scopo di SUBSTRING() in SQL รจ quello di restituire una porzione specifica della stringa.
Sintassi per sottostringa()
SUBSTRING(Expression, Starting Position, Total Length)
Qui:
- L'espressione SUBSTRING() in SQL Server Puรฒ essere qualsiasi carattere, binario, testo o immagine. L'espressione รจ la stringa sorgente da cui viene estratta la sottostringa.
- La posizione iniziale determina la posizione nell'espressione da cui deve iniziare la nuova sottostringa.
- La lunghezza totale รจ la lunghezza totale prevista della sottostringa risultante dall'espressione, a partire dalla posizione iniziale.
Regole per l'utilizzo di SUBSTRING()
- Tutti e tre gli argomenti sono obbligatori nella funzione SUBSTRING() di MS SQL.
- Se la posizione iniziale รจ maggiore del numero massimo di caratteri nell'espressione, la funzione SUBSTRING() di SQL Server non restituisce alcun risultato.
- La lunghezza totale puรฒ superare la lunghezza massima dei caratteri della stringa originale. In questo caso, la sottostringa risultante รจ l'intera stringa, a partire dalla posizione iniziale nell'espressione fino all'ultimo carattere dell'espressione.
Il diagramma seguente illustra l'utilizzo della funzione SUBSTRING() in SQL Server:
Esempi di sottostringhe T-SQL
Presupposto: supponiamo di avere una tabella denominata 'Guru99' con due colonne e quattro righe, come mostrato di seguito. Useremo questo 'GuruTabella 99 nei seguenti esempi:
Domanda 1: Utilizzare SUBSTRING() in SQL con una lunghezza inferiore alla lunghezza massima totale dell'espressione.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,1,2) As SUB from Guru99;
Risultato: Il diagramma seguente visualizza la sottostringa della colonna 'Tutorial_name' come colonna 'SUB'. La posizione iniziale รจ 1 e la lunghezza รจ 2, quindi vengono restituiti i primi due caratteri:
Domanda 2: In SQL Server, utilizzare SUBSTRING() con una lunghezza superiore alla lunghezza massima totale dell'espressione.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,2,8) As SUB from Guru99;
Risultato: Il diagramma seguente mostra la sottostringa della colonna 'Tutorial_name' come colonna 'SUB'. Anche se la lunghezza della sottostringa รจ maggiore della lunghezza massima totale dell'espressione, non viene generato alcun errore e la query restituisce la stringa completa a partire dalla posizione iniziale:
SUBSTRING con CHARINDEX in SQL Server
Un utilizzo molto comune nel mondo reale di SUBSTRING() รจ quello di esportaretracTesto che si trova prima o dopo un delimitatore, come ad esempio il dominio in un indirizzo email. Di per sรฉ, SUBSTRING() richiede una posizione iniziale fissa, ma la posizione di un delimitatore varia da riga a riga. La funzione CHARINDEX() risolve questo problema restituendo la posizione di un carattere all'interno di una stringa:
CHARINDEX(substring_to_find, expression [, start_location])
Annidando CHARINDEX() all'interno di SUBSTRING(), la posizione iniziale diventa dinamica. L'esempio seguente trova la @ simbolo e restituisce tutto ciรฒ che segue. A variabile contiene il valore di esempio:
DECLARE @Email VARCHAR(50) = 'john.doe@guru99.com'; SELECT SUBSTRING(@Email, CHARINDEX('@', @Email) + 1, LEN(@Email)) AS Domain;
Qui, CHARINDEX('@', @Email) individua la posizione del simbolo @, aggiungendo 1 si sposta oltre di esso e SUBSTRING() quindi escetracts i caratteri rimanenti. Per il valore sopra, la query restituisce il dominio guru99.comQuesto schema CHARINDEX-plus-SUBSTRING รจ il metodo standard per analizzare stringhe strutturate in T-SQL.
SUBSTRING vs LEFT e RIGHT in SQL Server
SQL Server offre anche le funzioni LEFT() e RIGHT() per estrarre caratteri dall'inizio o dalla fine di una stringa. Sono piรน brevi da scrivere, ma sono limitate alle due estremitร . SUBSTRING() รจ la piรน flessibile perchรฉ puรฒ iniziare da qualsiasi posizione. La tabella seguente le confronta:
| Funzione | argomenti | Extracts da | Sottostringa equivalente() |
| SINISTRA(espressione, n) | 2 | Inizio della corda | SUBSTRING(espressione, 1, n) |
| DESTRA(espressione, n) | 2 | Fine della stringa | SUBSTRING(espressione, LEN(espressione) โ n + 1, n) |
| SOTTOSTRINGA(espressione, inizio, lunghezza) | 3 | Qualsiasi posizione | Non applicabile |
In breve, LEFT() e RIGHT() sono comode scorciatoie per le estremitร di una stringa, mentre SUBSTRING() gestisce il caso generale, inclusi i caratteri presi dal centro.
Argomenti negativi, zero e NULL in SUBSTRING
Oltre alle regole di base, รจ utile sapere come si comporta SUBSTRING() ai margini. Quando la posizione iniziale รจ zero o negativa, SQL Server calcola una lunghezza effettiva di (inizio + lunghezza โ 1) e inizia a leggere dalla posizione uno. Quando un argomento รจ NULL, il risultato รจ NULL. La tabella seguente, verificata rispetto alla documentazione ufficiale SOTTOSTRINGA (Transact-SQL) Il riferimento mostra questi casi:
| Bando | Risultato | Ragione |
| SOTTOSTRINGA('Guru99', 1, 4) | Guru | Chiamata normale: quattro caratteri dalla prima posizione. |
| SOTTOSTRINGA('Guru99', 0, 3) | Gu | Inizia dal basso: la lunghezza effettiva รจ 0 + 3 โ 1 = 2. |
| SOTTOSTRINGA('Guru99', 4, 100) | u99 | La parte che supera la stringa restituisce il resto, senza errori. |
| SOTTOSTRINGA('Guru99', 3, NULL) | NULL | Un argomento NULL rende l'intero risultato NULL. |
Conoscere questi casi limite previene sorprese quando la posizione iniziale viene calcolata da un'altra colonna o da un variabile che potrebbe essere zero o NULL.




