Negli ambienti SQL Server, due delle numerose funzioni di stringa a nostra disposizione sono LEFT()
e SUBSTRING()
.
Queste funzioni fanno una cosa simile, ma ci sono differenze. Questo articolo esamina alcune delle principali differenze tra queste funzioni.
Definizione
Per prima cosa, diamo un'occhiata a cosa fa ciascuna funzione:
LEFT()
- Restituisce la parte sinistra di una stringa di caratteri con il numero di caratteri specificato.
SUBSTRING()
- Restituisce parte di un'espressione di carattere, binaria, di testo o immagine.
Quindi LEFT()
restituisce solo la parte sinistra della stringa.
SUBSTRING()
restituisce semplicemente una parte dell'espressione (non è limitata solo alla parte sinistra:potrebbe essere sinistra, destra o da qualche parte nel mezzo).
Esempio 1 – Stesso risultato
Entrambe le funzioni possono essere utilizzate per restituire un certo numero di caratteri da sinistra.
SELECT LEFT('Buckethead', 6) AS [LEFT], SUBSTRING('Buckethead', 1, 6) AS [SUBSTRING];
Risultato:
+--------+-------------+ | LEFT | SUBSTRING | |--------+-------------| | Bucket | Bucket | +--------+-------------+
Tuttavia, LEFT()
è più conciso. Ciò è in parte dovuto al fatto che ci sono meno caratteri nel nome della funzione.
Ma è anche a causa della sintassi. Il LEFT()
la funzione richiede solo due argomenti (l'espressione e il numero di caratteri da restituire), mentre SUBSTRING()
richiede tre argomenti (l'espressione, la posizione iniziale e il numero di caratteri da restituire da quella posizione iniziale).
Esempio 2 – Quando SUBSTRING è meglio
SUBSTRING()
è molto meglio di LEFT()
a prendere i dati dal centro della stringa. In realtà, la sinistra non è progettata per questo. Se volevi davvero usare LEFT()
per farlo, dovresti fare qualche trucco, come usare un RIGHT()
funzione come primo argomento.
Esempio:
SELECT LEFT(RIGHT('Buckethead', 7), 3) AS [LEFT/RIGHT], SUBSTRING('Buckethead', 4, 3) AS [SUBSTRING];
Risultato:
+--------------+-------------+ | LEFT/RIGHT | SUBSTRING | |--------------+-------------| | ket | ket | +--------------+-------------+
Tipi di dati accettati
Il LEFT()
la funzione non accetta il testo e ntext tipi di dati come primo argomento. Supporta tutti gli altri tipi di dati che possono essere convertiti in varchar o nvarchar .
Il SUBSTRING()
funzione d'altra parte, accetta carattere , binario , testo , ntesto e immagine espressioni.
Valori di ritorno
LEFT()
restituisce varchar quando il primo argomento è un tipo di dati carattere non Unicode e nvarchar quando è un tipo di dati di carattere Unicode.
I valori restituiti per SUBSTRING()
sono i seguenti:
Espressione (primo argomento) | Tipo di reso |
---|---|
carattere /varchar /testo | varchar |
nchar /nvarchar /ntesto | nvarchar |
binario /variabile /immagine | variabile |