Problema na Concatenação de Campos no SQL SERVER 2008R2

SQL Server

14/08/2013

Bom dia,

Eu estou tentando concatenar dois campos na minha tabela de endereços, esses dois campos seriam: Logradouro e Endereço.

O select é: SELECT CdLog + ' ' +Ender FROM EndCli

Ao invés de resultar isso: AV Paulista
O resultado é esse: AV

Eu notei que esse campo Ender não aparece com nenhum campo, ele só aparece no resultado se eu der um SELECT Ender, CdLog... FROM EndCli, ou seja, sem fazer concatenação nenhuma.

Obs: Os dois campo são do tipo: VARCHAR.

Obrigado.
Wylliam

Wylliam

Curtidas 0

Melhor post

Wylliam

Wylliam

14/08/2013

Isso, na verdade o CdLog é o Código do Logradouro. Ex: AV, R, EST, etc...
GOSTEI 1

Mais Respostas

Rodrigo Lacerda

Rodrigo Lacerda

14/08/2013

Pelo que você disse deve ser algum erro no código... posso estar errado , mas poderia colocar o codigo aqui para verificarmos?

Att
GOSTEI 0
Wylliam

Wylliam

14/08/2013

O select que eu faço no Microsoft SQL Management Studio é


SELECT CdLog+' '+Ender
FROM EndCli
WHERE NrContrCli = '200300418726'
GOSTEI 0
Wylliam

Wylliam

14/08/2013

O select que eu faço no Microsoft SQL Management Studio é


SELECT CdLog+' '+Ender
FROM EndCli
WHERE NrContrCli = '200300418726'


O problema está na hora de fazer o select no SGBD, eu ainda não testei a query no código do meu programa.
GOSTEI 0
Deivison Melo

Deivison Melo

14/08/2013

Em algumas situações talvez seja necessário fazer um cast nos campos que estão sendo concatenados...

Pesquisa sobre concatenação de campos com o SQL Server...

Dá uma olhadinha no exemplo do link abaixo:

http://social.msdn.microsoft.com/Forums/sqlserver/pt-BR/e63ad5f6-7898-4c30-a6ec-9e5b9de2871f/concatenar-no-sql-server
GOSTEI 0
Wylliam

Wylliam

14/08/2013

Os dois campo são:

CdLog: VARCHAR(10)
Ender: VARCHAR(40)

Não seria questão de incompatibilidade de tipos, mas por desencargo eu fiz assim:

SELECT (CONVERT(VARCHAR(40), CdLog)+' '+CONVERT(VARCHAR(40), Ender)) AS Endereço
FROM EndCli
WHERE NrContrCli = '200300418726'

e

SELECT (CAST(CdLog AS VARCHAR(40))+' '+CAST(Ender AS VARCHAR(40))) AS Endereço
FROM EndCli
WHERE NrContrCli = '200300418726'

Mas o problema persiste.

Obrigado.
GOSTEI 0
Gabriel Simas

Gabriel Simas

14/08/2013

Wylliam,

Tente utilizar parenteses como no exemplo abaixo, eu sempre uso desta forma e funciona:

SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Person
GOSTEI 0
Wylliam

Wylliam

14/08/2013

Tentei assim:

SELECT (CdLog+' '+Ender) As Endereço
FROM EndCli
WHERE NrContrCli = '200300418726'

Não funcionou também.
GOSTEI 0
Gabriel Simas

Gabriel Simas

14/08/2013

Tentei assim:

SELECT (CdLog+' '+Ender) As Endereço
FROM EndCli
WHERE NrContrCli = '200300418726'

Não funcionou também.


Wyll,

Posta a mensagem de erro pra gente por favor.

Forte Abraço
GOSTEI 0
Wylliam

Wylliam

14/08/2013

Então, na verdade não tem mensagem de erro. A query apenas tras o valor do campo CdLog.


Obs: Tanto o CdLog e o Ender contem valores.
GOSTEI 0
Alex Lekao

Alex Lekao

14/08/2013

Ola Wyllian, boa tarde!!!

Experimenta colocar uma virgula no exemplo da concatenacao para ver se resolve.

Era para ter funcionado.

Em todo caso estou testando com minha base aqui da empresa que temos campos parecidos com o seu, e posto aqui ja ja o codigo que fiz e se funcionou.

Abraco.
GOSTEI 0
Wylliam

Wylliam

14/08/2013

Cara, nem a virgula aparece....

SELECT (CdLog+','+Ender) As Endereço
FROM EndCli
WHERE NrContrCli = '200300418726'

Só me retornou o campo CdLog que é "R" para esse fulano ai...
GOSTEI 0
Alex Lekao

Alex Lekao

14/08/2013

Ola Wylliam,

Muito estranho o que esta acontecendo.

Aqui no meu teste apareceu tudo normal, com espaco entre as aspas, sem espaco, com uma virgula, com dois pontos.

no meu caso os dois campos que usei, bairro e endereco, sao varchar()60.

O codigo eh exatamente este que vc postou?
GOSTEI 0
Wylliam

Wylliam

14/08/2013

Sim, exatamente esse.

Não passa por minha cabeça como isso pode ocorrer
GOSTEI 0
Alex Lekao

Alex Lekao

14/08/2013

tambem nao passsa nada pela minha cabeca.

o codlog eh o logradouro certo? avenida, alameda, etc?

experimente usar o substr para ver se da certo.
GOSTEI 0
Alex Lekao

Alex Lekao

14/08/2013

eh... foi isto mesmo que quis dizer... rsrsr
GOSTEI 0
Daniel Costa

Daniel Costa

14/08/2013

Pergunta

rodou a consulta abaixo no Management Studio para verificar se ender tá preeenchido...sei lá vai que....

SELECT (CdLog+' '+Ender) As Endereço, ender
FROM EndCli
WHERE NrContrCli = '200300418726'


O resultado dessa query cai em um dataset tipado, pois ees dataset pode ter limitação

roda essa consulta de baixo só dew curiosidade, ela trata nulo e vazio


SELECT top 100 (CdLog+' '+Ender) As Endereço, ender
FROM EndCli
WHERE len(rtrim(ltrim(isnull(ender,'')))) <> 0
GOSTEI 0
POSTAR