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 |