Array
(
)

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

Wylliam
   - 14 ago 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.

Rodrigo Lacerda
   - 14 ago 2013

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

Att

Wylliam
   - 14 ago 2013

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

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

Wylliam
   - 14 ago 2013


Citação:
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.

Emanoel Deivison
   - 14 ago 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

Wylliam
   - 14 ago 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.

Gabrielsimas
   - 14 ago 2013

Wylliam,

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

#Código

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

Wylliam
   - 14 ago 2013

Tentei assim:

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

Não funcionou também.

Gabrielsimas
   - 14 ago 2013


Citação:
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

Wylliam
   - 14 ago 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.

Alex Lekao
   - 14 ago 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.

Wylliam
   - 14 ago 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...

Alex Lekao
   - 14 ago 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?

Wylliam
   - 14 ago 2013

Sim, exatamente esse.

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

Alex Lekao
   - 14 ago 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.

Wylliam
   - 14 ago 2013

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

Alex Lekao
   - 14 ago 2013

eh... foi isto mesmo que quis dizer... rsrsr

Daniel Costa
   - 15 ago 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