Len

05/04/2006 - 18:32 por Penta | Informe spam
Estimados.
Tengo :

declare @cadena as varchar(100)

set @cadena=' PP '

select @cadena

select len(@cadena)

como ven el largo de @cadena es de 5 pero el len me da 4, no considera
el espacio final.

Preguntas similare

Leer las respuestas

#1 keko
05/04/2006 - 18:51 | Informe spam
Yo creo que es porque lo has definido como varchar... este tipo de dato
evita almacenar los espacios por la izquierda, si lo declaras como
char(100) te dará correcto el resultado.




Penta wrote:
Estimados.
Tengo :

declare @cadena as varchar(100)

set @cadena=' PP '

select @cadena

select len(@cadena)

como ven el largo de @cadena es de 5 pero el len me da 4, no considera
el espacio final.


Respuesta Responder a este mensaje
#2 Alejandro Mesa
05/04/2006 - 19:31 | Informe spam
Penta,

Si te fijas en los BOL, esta funcion no toma en cuenta los caracteres de
espacio hacia la derecha. Preferible que uses la funcion "datalength", que
devuelve la cantidad de bytes en la cadena. Solo recuerda que en caso de
nchar/nvarchar la cantidad de bytes por caracter son 2.

Ejemplo:

select len(space(1)), datalength(space(1)), datalength(cast(space(1) as
nchar(1)))
go


AMB

"Penta" wrote:

Estimados.
Tengo :

declare @cadena as varchar(100)

set @cadena=' PP '

select @cadena

select len(@cadena)

como ven el largo de @cadena es de 5 pero el len me da 4, no considera
el espacio final.


Respuesta Responder a este mensaje
#3 Penta
05/04/2006 - 20:52 | Informe spam
Te pasaste !!!
No tenia idea que existia dicha funcion, ya que no esta como funcion de
cadena MIL GRACIAS
Respuesta Responder a este mensaje
#4 Salvador Ramos
05/04/2006 - 21:50 | Informe spam
Además de la clara explicación que te ha dado Alejandro, ten en cuenta que
si usas char/nchar el resultado es diferente, mira este ejemplo:

declare @a varchar(100)
declare @b char(100)
declare @c nvarchar(100)
declare @d nchar(100)

set @a = ' pp '
set @b = ' pp '
set @c = ' pp '
set @d = ' pp '

print datalength(@a)
print datalength(@b)
print datalength(@c)
print datalength(@d)


Un saludo
Salvador Ramos
Murcia - España

[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL Server y .NET)


"Penta" escribió en el mensaje
news:
Te pasaste !!!
No tenia idea que existia dicha funcion, ya que no esta como funcion de
cadena MIL GRACIAS

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida