Concatenacion

12/01/2006 - 23:23 por Natacha | Informe spam
Hola

No se si es una bobada..

Tengo dos campos varchar

Resulta que el primer campo tiene al final un espacio, por ejemplo:

Campo1= 'Primer resultado de '
Campo2 = 'examenes'

cuando hago un select campo1 + campo2 from tabla, la consulta arroja los
datos concatenados pero omitiendo el espacio en blanco del final del primer
campo, es como si hiciera un trim explicito.
el resultado es 'Primer resultado deexamenes'

No se porque omite el espacio al final

Ayuda por favor.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
12/01/2006 - 23:41 | Informe spam
Natacha,

Como sabes que la columna tiene espacios al final. Puedes postear el
resultado de:

select len(c1), datalenght(c1), c1
from t1
where ...


AMB



"Natacha" wrote:

Hola

No se si es una bobada..

Tengo dos campos varchar

Resulta que el primer campo tiene al final un espacio, por ejemplo:

Campo1= 'Primer resultado de '
Campo2 = 'examenes'

cuando hago un select campo1 + campo2 from tabla, la consulta arroja los
datos concatenados pero omitiendo el espacio en blanco del final del primer
campo, es como si hiciera un trim explicito.
el resultado es 'Primer resultado deexamenes'

No se porque omite el espacio al final

Ayuda por favor.




Respuesta Responder a este mensaje
#2 Natacha
13/01/2006 - 00:05 | Informe spam
El resultado es 255, 58, 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

He verificado que tiene el espacio haciendo select y viendo los resultados
en el query analyzer por la vista de texto y no de grilla.

Tambien probé insertando el espacio en uno de los registros directamente
desde la consola de enterprise manager.



"Alejandro Mesa" escribió:

Natacha,

Como sabes que la columna tiene espacios al final. Puedes postear el
resultado de:

select len(c1), datalenght(c1), c1
from t1
where ...


AMB



"Natacha" wrote:

> Hola
>
> No se si es una bobada..
>
> Tengo dos campos varchar
>
> Resulta que el primer campo tiene al final un espacio, por ejemplo:
>
> Campo1= 'Primer resultado de '
> Campo2 = 'examenes'
>
> cuando hago un select campo1 + campo2 from tabla, la consulta arroja los
> datos concatenados pero omitiendo el espacio en blanco del final del primer
> campo, es como si hiciera un trim explicito.
> el resultado es 'Primer resultado deexamenes'
>
> No se porque omite el espacio al final
>
> Ayuda por favor.
>
>
>
>
Respuesta Responder a este mensaje
#3 Guillermo Roldan
13/01/2006 - 09:39 | Informe spam
Hola Natacha,

Al menos con SQL Server 2000, en los campos VARCHAR, los espacios a la
derecha se pierden, concatena mejor así:

campo1 + ' ' + campo2

En los campos CHAR... se rellena con espacios, por lo que concatena así:

rtrim(campo1) + ' ' + rtrim(campo2)

En consecuencia, te da igual guardar espacios a la derecha o no guardarlos,
ya sea un campo CHAR o un campo VARCHAR. Otra cuestión sería almacenar
espacios al principio...

Otra cosa que te podría afectar es que uno de los dos campos fuera nulo. De
ser así, la concatenación de nulo+texto es nulo...

En fin, te anexo un pequeño ejemplo con TSQL, por si te ayuda.

Saludos,
Guillermo

declare @k varchar(200)
declare @q varchar(200)

set @k='ss'
set @q='ss '

select @k
select len(@k)
select @q
select len(@q)
select @k+null

if @k=@q
select 'son iguales'


"Natacha" wrote:

Hola

No se si es una bobada..

Tengo dos campos varchar

Resulta que el primer campo tiene al final un espacio, por ejemplo:

Campo1= 'Primer resultado de '
Campo2 = 'examenes'

cuando hago un select campo1 + campo2 from tabla, la consulta arroja los
datos concatenados pero omitiendo el espacio en blanco del final del primer
campo, es como si hiciera un trim explicito.
el resultado es 'Primer resultado deexamenes'

No se porque omite el espacio al final

Ayuda por favor.




Respuesta Responder a este mensaje
#4 Alejandro Mesa
13/01/2006 - 17:48 | Informe spam
Natacha,

El resultado es 255, 58, 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'



Estas segura de que ese es el resultado?. La funcion LEN devuelve la
cantidad de caracteres sin tomar en cuenta los espacios. La funcion
DATALENGTH devuelve la cantidad de bytes almacenados y no discrimina
espacios. Si la columna es varchar, el resultado de LEN debe ser menor o
igual que el resultado de DATALENGTH.

Ejemplo:

create table t1 (c1 varchar(255))
go

insert into t1 values ('Microsoft ')
go

select len(c1), datalength(c1), c1
from t1
go

drop table t1
go

Ahora, existe la opcion "ansi_padding", que si esta apagada cuando creas la
tabla-columna, entonces cuando insertas valores con espacioes al final, sql
server los eliminas.

Ejemplo:

set ansi_padding off
go

create table t1 (c1 varchar(255))
go

insert into t1 values ('Microsoft ')
go

select len(c1), datalength(c1), c1
from t1
go

drop table t1
go

set ansi_padding on
go


AMB

"Natacha" wrote:

El resultado es 255, 58, 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

He verificado que tiene el espacio haciendo select y viendo los resultados
en el query analyzer por la vista de texto y no de grilla.

Tambien probé insertando el espacio en uno de los registros directamente
desde la consola de enterprise manager.



"Alejandro Mesa" escribió:

> Natacha,
>
> Como sabes que la columna tiene espacios al final. Puedes postear el
> resultado de:
>
> select len(c1), datalenght(c1), c1
> from t1
> where ...
>
>
> AMB
>
>
>
> "Natacha" wrote:
>
> > Hola
> >
> > No se si es una bobada..
> >
> > Tengo dos campos varchar
> >
> > Resulta que el primer campo tiene al final un espacio, por ejemplo:
> >
> > Campo1= 'Primer resultado de '
> > Campo2 = 'examenes'
> >
> > cuando hago un select campo1 + campo2 from tabla, la consulta arroja los
> > datos concatenados pero omitiendo el espacio en blanco del final del primer
> > campo, es como si hiciera un trim explicito.
> > el resultado es 'Primer resultado deexamenes'
> >
> > No se porque omite el espacio al final
> >
> > Ayuda por favor.
> >
> >
> >
> >
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida