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 |