2016/02/17

LEN vs DATALENGTH

PROBLEMA
Seguramente nos hemos topado con estas dos funciones, a primera vista son iguales, pero realmente conocemos para que sirven?

SOLUCION
Con los siguientes ejemplos, espero que podamos comprender mejor su funcionamiento y en que casos podemos ocupar dichas funciones.

LEN
Extrae el numero de caracteres dentro de una variable tipo cadena, sin contar los espacios al final de esta misma. 

DATALENGTH
Extrae el espacio ocupado en memoria por los caracteres contenidos en una variable tipo cadena, sin contar los espacios al final de la misma.

Estas son las diferencias entre ambas funciones, mejor explicado con algunos ejemplos a continuación utilizando tipos de datos, veamos el contenido de las variables que utilizaremos : 

‘’ Cadena vacía para verificar el contenido en los diferentes tipos de datos.
‘1234’ Solo 4 caracteres, numerados en su posición del 1 al 4.
‘1234    ’ 8 caracteres, 4 numerados y 4 con espacios en blanco
'  3456  9 ' 10 caracteres, numerados solo algunas posiciones, el resto con espacios en blanco

Para la explicación de los tipos de datos, les dejo un artículo escrito algunos meses atras
-- TIPO DE DATO: CHAR 
DECLARE @varString1 CHAR(10) = '' 
DECLARE @varString2 CHAR(10) = '1234' 
DECLARE @varString3 CHAR(10) = '1234    ' 
DECLARE @varString4 CHAR(10) = '  3456  9 ' 

SELECT 'CHAR' AS tipoDato, 'LEN' AS funcion 
, LEN( @varString1 ) AS resultado1 
, LEN( @varString2 ) AS resultado2 
, LEN( @varString3 ) AS resultado3 
, LEN( @varString4 ) AS resultado4 

SELECT 'CHAR' AS tipoDato, 'DATALENGTH' AS funcion 
, DATALENGTH( @varString1 ) AS resultado1 
, DATALENGTH( @varString2 ) AS resultado2 
, DATALENGTH( @varString3 ) AS resultado3 
, DATALENGTH( @varString4 ) AS resultado4


-- TIPO DE DATO: NCHAR 
DECLARE @varNstring1 NCHAR(10) = '' 
DECLARE @varNstring2 NCHAR(10) = '1234' 
DECLARE @varNstring3 NCHAR(10) = '1234    ' 
DECLARE @varNstring4 NCHAR(10) = '  3456  9 ' 

SELECT 'NCHAR' AS tipoDato, 'LEN' AS funcion 
, LEN( @varNstring1 ) AS resultado1 
, LEN( @varNstring2 ) AS resultado2 
, LEN( @varNstring3 ) AS resultado3 
, LEN( @varNstring4 ) AS resultado4 

SELECT 'NCHAR' AS tipoDato, 'DATALENGTH' AS funcion 
, DATALENGTH( @varNstring1 ) AS resultado1 
, DATALENGTH( @varNstring2 ) AS resultado2 
, DATALENGTH( @varNstring3 ) AS resultado3 
, DATALENGTH( @varNstring4 ) AS resultado4 


-- TIPO DE DATO: VARCHAR 
DECLARE @varString1 VARCHAR(10) = '' 
DECLARE @varString2 VARCHAR(10) = '1234' 
DECLARE @varString3 VARCHAR(10) = '1234    ' 
DECLARE @varString4 VARCHAR(10) = '  3456  9 ' 

SELECT 'VARCHAR' AS tipoDato, 'LEN' AS funcion 
, LEN( @varString1 ) AS resultado1 
, LEN( @varString2 ) AS resultado2 
, LEN( @varString3 ) AS resultado3 
, LEN( @varString4 ) AS resultado4 

SELECT 'VARCHAR' AS tipoDato, 'DATALENGTH' AS funcion 
, DATALENGTH( @varString1 ) AS resultado1 
, DATALENGTH( @varString2 ) AS resultado2 
, DATALENGTH( @varString3 ) AS resultado3 
, DATALENGTH( @varString4 ) AS resultado4


-- TIPO DE DATO: NVARCHAR 
DECLARE @varNstring1 NVARCHAR(10) = '' 
DECLARE @varNstring2 NVARCHAR(10) = '1234' 
DECLARE @varNstring3 NVARCHAR(10) = '1234    ' 
DECLARE @varNstring4 NVARCHAR(10) = '  3456  9 ' 
 
SELECT 'NVARCHAR' AS tipoDato, 'LEN' AS funcion 
, LEN( @varNstring1 ) AS resultado1 
, LEN( @varNstring2 ) AS resultado2 
, LEN( @varNstring3 ) AS resultado3 
, LEN( @varNstring4 ) AS resultado4 
 
SELECT 'NVARCHAR' AS tipoDato, 'DATALENGTH' AS funcion 
, DATALENGTH( @varNstring1 ) AS resultado1 
, DATALENGTH( @varNstring2 ) AS resultado2 
, DATALENGTH( @varNstring3 ) AS resultado3 
, DATALENGTH( @varNstring4 ) AS resultado4 

Espero que con estos ejemplos, se haya aclarado el panorama con respecto a estas dos funciones.

SALUDOS
COMPARTE ESTA INFORMACION SI TE PARECIO INTERESANTE

0 comentarios:

Publicar un comentario