In ambienti SQL Server, due delle molte funzioni di stringa a nostra disposizione sonoLEFT()
eSUBSTRING()
.
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 ciò che fa ogni funzione:
LEFT()
Restituisce la parte sinistra di una stringa di caratteri con il numero specificato di caratteri., SUBSTRING()
Restituisce parte di un’espressione di carattere, binario, testo o immagine.
So LEFT()
restituisce solo la parte sinistra della stringa.
SUBSTRING()
restituisce semplicemente una parte dell’espressione (non è limitata alla sola 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 , SUBSTRING("Buckethead", 1, 6) AS ;
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. La funzioneLEFT()
richiede solo due argomenti (l’espressione e il numero di caratteri da restituire), mentreSUBSTRING()
richiede tre argomenti (l’espressione, la posizione iniziale e il numero di caratteri da restituire da quella posizione iniziale).,
Esempio 2 – Quando la SOTTOSTRINGA è migliore
SUBSTRING()
è molto meglio diLEFT()
nell’afferrare i dati dal centro della stringa. In realtà, left non è progettato per questo. Se vuoi davvero usareLEFT()
per farlo, dovresti fare qualche trucco, come usare una funzioneRIGHT()
come primo argomento.,
Esempio:
SELECT LEFT(RIGHT("Buckethead", 7), 3) AS , SUBSTRING("Buckethead", 4, 3) AS ;
Risultato:
+--------------+-------------+| LEFT/RIGHT | SUBSTRING ||--------------+-------------|| ket | ket |+--------------+-------------+
Tipi di dati accettati
La funzione LEFT()
non accetta i tipi di dati text e ntext come primo argomento. Supporta tutti gli altri tipi di dati che possono essere convertiti in varchar o nvarchar.
La funzione SUBSTRING()
accetta invece espressioni di carattere, binario, testo, ntext e immagine.,
Valori di ritorno
LEFT()
restituisce varchar quando il primo argomento è un tipo di dati di carattere non Unicode, e nvarchar quando si tratta di un tipo di dati di carattere Unicode.,
The return values for SUBSTRING()
are as follows:
Expression (first argument) | Return type |
---|---|
char/varchar/text | varchar |
nchar/nvarchar/ntext | nvarchar |
binary/varbinary/image | varbinary |