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

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

Respostas

14/08/2013

Rodrigo Lacerda

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

Att
Responder Citar

14/08/2013

Wylliam

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


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

14/08/2013

Wylliam

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.
Responder Citar

14/08/2013

Emanoel Deivison

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
Responder Citar

14/08/2013

Wylliam

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.
Responder Citar

14/08/2013

Gabrielsimas

Wylliam,

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

SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Person
Responder Citar

14/08/2013

Wylliam

Tentei assim:

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

Não funcionou também.
Responder Citar

14/08/2013

Gabrielsimas

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
Responder Citar

14/08/2013

Wylliam

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.
Responder Citar

14/08/2013

Alex Lekao

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.
Responder Citar

14/08/2013

Wylliam

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...
Responder Citar

14/08/2013

Alex Lekao

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?
Responder Citar

14/08/2013

Wylliam

Sim, exatamente esse.

Não passa por minha cabeça como isso pode ocorrer
Responder Citar

14/08/2013

Alex Lekao

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.
Responder Citar

14/08/2013

Wylliam

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