Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

LEFT() vs SUBSTRING() in SQL Server:qual è la differenza?

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