en entornos 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.
Definition
primero, veamos lo que hace cada función:
LEFT()
devuelve la parte izquierda de una cadena de caracteres con el número especificado de caracteres., SUBSTRING()
devuelve parte de una expresión de carácter, binario, texto o imagen.
So 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-podría ser izquierda, derecha o en algún lugar en el medio).
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 , SUBSTRING("Buckethead", 1, 6) AS ;
Resultado:
+--------+-------------+| LEFT | SUBSTRING ||--------+-------------|| Bucket | Bucket |+--------+-------------+
sin Embargo, LEFT()
es más concisa., 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. La función LEFT()
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 inicial y el número de caracteres a devolver desde esa posición inicial).,
Ejemplo 2 – cuando la subcadena es mejor
SUBSTRING()
es mucho mejor que LEFT()
para capturar datos desde la mitad de la cadena. En realidad, la izquierda no está diseñada para eso. Si realmente quieres usar LEFT()
para hacer esto, necesitas hacer algunos trucos, como usar una función RIGHT()
como su primer argumento.,
Ejemplo:
SELECT LEFT(RIGHT("Buckethead", 7), 3) AS , SUBSTRING("Buckethead", 4, 3) AS ;
Resultado:
+--------------+-------------+| LEFT/RIGHT | SUBSTRING ||--------------+-------------|| ket | ket |+--------------+-------------+
Aceptado Tipos de Datos
El LEFT()
función no aceptar el texto y ntext tipos de datos como primer argumento. Es compatible con todos los otros tipos de datos que se pueden convertir a varchar o nvarchar.
la función SUBSTRING()
por otro lado, acepta expresiones de carácter, binario, texto, ntext e imagen.,
devuelve valores
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.,
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 |