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 |