sql >> Base de Datos >  >> RDS >> Sqlserver

LEFT() vs SUBSTRING() en SQL Server:¿Cuál es la diferencia?

En entornos de SQL Server, dos de las muchas funciones de cadena a nuestra disposición son LEFT() y SUBSTRING() .

Estas funciones hacen algo similar, pero hay diferencias. Este artículo analiza algunas de las principales diferencias entre estas funciones.

Definición

Primero, veamos qué hace cada función:

LEFT()
Devuelve la parte izquierda de una cadena de caracteres con el número de caracteres especificado.
SUBSTRING()
Devuelve parte de una expresión de carácter, binario, texto o imagen.

Entonces LEFT() devuelve solo la parte izquierda de la cadena.

SUBSTRING() simplemente devuelve una parte de la expresión (no se limita solo a la parte izquierda, puede ser a la izquierda, a la derecha o en algún punto intermedio).

Ejemplo 1:Mismo resultado

Ambas funciones se pueden usar para devolver un cierto número de caracteres desde la izquierda.

SELECT 
  LEFT('Buckethead', 6) AS [LEFT],
  SUBSTRING('Buckethead', 1, 6) AS [SUBSTRING];

Resultado:

+--------+-------------+
| LEFT   | SUBSTRING   |
|--------+-------------|
| Bucket | Bucket      |
+--------+-------------+

Sin embargo, LEFT() es más conciso. Esto se debe en parte al hecho de que hay menos caracteres en el nombre de la función.

Pero también es por la sintaxis. El LEFT() La función solo requiere dos argumentos (la expresión y el número de caracteres a devolver), mientras que SUBSTRING() requiere tres argumentos (la expresión, la posición de inicio y el número de caracteres para volver desde esa posición de inicio).

Ejemplo 2:cuando SUBSTRING es mejor

SUBSTRING() es mucho mejor que LEFT() en la captura de datos desde el medio de la cadena. En realidad, la izquierda no está diseñada para eso. Si realmente quisieras usar LEFT() para hacer esto, necesitaría hacer algunos trucos, como usar un RIGHT() funcionar como su primer argumento.

Ejemplo:

SELECT 
  LEFT(RIGHT('Buckethead', 7), 3) AS [LEFT/RIGHT],
  SUBSTRING('Buckethead', 4, 3) AS [SUBSTRING];

Resultado:

+--------------+-------------+
| LEFT/RIGHT   | SUBSTRING   |
|--------------+-------------|
| ket          | ket         |
+--------------+-------------+

Tipos de datos aceptados

El LEFT() la función no acepta el texto y ntext tipos de datos como su primer argumento. Admite todos los demás tipos de datos que se pueden convertir a varchar o nvarchar .

El SUBSTRING() la función por otro lado, acepta carácter , binario , texto , ntext y imagen expresiones.

Valores devueltos

LEFT() devuelve varchar cuando el primer argumento es un tipo de datos de carácter no Unicode y nvarchar cuando es un tipo de datos de carácter Unicode.

Los valores devueltos para SUBSTRING() son los siguientes:

Expresión (primer argumento) Tipo de devolución
carácter /varchar /texto varchar
nchar /nvarchar /ntext nvarchar
binario /varbinario /imagen varbinario