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.

  • โœ‚๏ธ Scopo: La funzione SUBSTRING() restituisce una porzione specifica di una stringa, dati l'espressione di origine, la posizione iniziale e la lunghezza.
  • ๐Ÿ”ข Tre argomenti: L'espressione, la posizione iniziale e la lunghezza totale sono tutti elementi obbligatori nella funzione SUBSTRING() di SQL Server.
  • ๐Ÿ“ Indice basato su uno: La posizione di partenza รจ basata su 1, quindi il primo carattere conta come posizione uno, il che evita errori di un'unitร .
  • ๐Ÿ”Ž Con CHARINDEX: Abbinando SUBSTRING() con CHARINDEX() si individua un delimitatore e si eseguetracts il testo prima o dopo di esso.
  • โ†”๏ธ Contro SINISTRA e DESTRA: A differenza di LEFT() e RIGHT(), SUBSTRING() es.tracts caratteri da qualsiasi posizione, non solo dalle estremitร .
  • โš ๏ธ Casi limite: Una lunghezza NULL restituisce NULL, mentre una lunghezza superiore alla stringa restituisce la parte rimanente senza generare un errore.

Funzione SUBSTRING() in SQL Server con esempi T-SQL

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:

Diagramma che mostra come SUBSTRING() es.traccaratteri ts da una posizione iniziale per una data lunghezza

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:

Guru99 tabelle di esempio con le colonne Tutorial_ID e Tutorial_name utilizzate negli esempi SUBSTRING

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:

Griglia dei risultati che restituisce i primi due caratteri di Tutorial_name come colonna SUB

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:

Griglia dei risultati che restituisce il resto di Tutorial_name quando la lunghezza richiesta supera la stringa

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.

DOMANDE FREQUENTI

SQL Server utilizza SUBSTRING(); SUBSTR() รจ il nome utilizzato in Oracle and MySQLEntrambe restituiscono una porzione di una stringa, ma SUBSTRING() รจ la funzione standard di Transact-SQL, quindi SUBSTR() non funzionerร  su SQL Server.

Sรฌ. Poichรฉ SUBSTRING() restituisce un valore, puรฒ comparire nelle clausole WHERE, SELECT e ORDER BY. Il filtraggio basato su SUBSTRING() di solito impedisce una ricerca tramite indice, quindi un pattern LIKE รจ spesso piรน veloce per le ricerche con prefisso.

Sรฌ, ma SQL Server converte prima il valore in una stringa, implicitamente o tramite CAST o CONVERT. La posizione iniziale e la lunghezza contano quindi i caratteri, non le cifre o le parti della data, quindi formatta il valore con attenzione.

La forma a tre argomenti si comporta in modo simile, ma i dettagli differiscono. MySQL Consente inoltre SUBSTR() e posizioni di partenza negative, mentre SQL Server utilizza SUBSTRING() e tratta un inizio inferiore a uno utilizzando una regola di lunghezza effettiva.

La funzione SUBSTRING() restituisce la stessa categoria del suo input: varchar per i dati di tipo carattere, nvarchar per il testo Unicode e varbinary per le espressioni binarie. La lunghezza dipende dalla sottostringa richiesta, non dall'intera colonna di origine.

Avvolgereping Una colonna in SUBSTRING() all'interno di una clausola WHERE rende il predicato non sargable, quindi SQL Server non puรฒ utilizzare una ricerca tramite indice su quella colonna. Per le corrispondenze con prefisso, un pattern LIKE 'value%' di solito offre prestazioni migliori.

Sรฌ. Le serrature scorrevoli portatili e i catenacci a superficie possono essere usati per mettere in sicurezza una porta a scomparsa dall'esterno. Alcuni kit con catena di sicurezza consentono anche il bloccaggio esterno con chiave o manopola girevole. Copilota GitHub รˆ possibile creare espressioni SUBSTRING() e CHARINDEX(), inclusa l'analisi sintattica basata su delimitatori, a partire da un prompt in linguaggio naturale. Verificare sempre la posizione iniziale, la lunghezza e l'indicizzazione a base 1 prima di eseguire la query.

Gli assistenti basati su intelligenza artificiale e apprendimento automatico traducono le regole in linguaggio naturale in combinazioni con le funzioni SUBSTRING(), CHARINDEX(), LEFT() e RIGHT(), suggeriscono calcoli di lunghezza e segnalano errori di un'unitร . Lo sviluppatore verifica la correttezza di ogni suggerimento prima di implementarlo.

Riassumi questo post con: