Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alex_DTP

[Resolvido] CONCAT_WS não funciona. repete o separador para nulos

Recommended Posts

Pessoal,

 

Tõ encafifado com um problema com o CONCAT_WS. Está repetindo o separador para valores nulos.

 

Ex.:

 

CONCAT_WS(',', e.end_TipoLograd, e.end_Tratamento, e.end_NomeLograd) AS endereco

 

| Avenida | São | João |

 

Avenda,São,João

 

Até aí beleza, mas agora

 

| Avenida | NULL | Ipiranga |

 

Avenda,,Ipiranga

 

Não deveria repetir a virgula, estou certo?

 

O quê pode estar acontecendo? Pelo que entendi da função não deveria repetir o separador.

 

Alex

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eh NULL mesmo marcado como NULL ou eh vazio sem nada porem nao nulo?

Hummm! É vazio. É por isso? Tem como contornar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer um update ou um bacalhau

 

o update acho q você sabe como fazer o bacalhau seria algo como

 

concat_ws( if(campo1='',NULL,campo) , if(campo1='',NULL,campo))

Compartilhar este post


Link para o post
Compartilhar em outros sites

É eu tava fazendo pior...

 

CONCAT_WS('',campo1,NULLIF(CONCAT(' ',campo2),''),NULLIF(CONCAT(', ',campo3),''), . . .

 

até que deu certo mas quando tem 2 campos "vazios" seguidos, repete o separador.

 

Vou fazer o update como você sugeriu.

 

Só uma dúvida: É sempre melhor trabalhar com NULL em vez de vazio nas tabelas?

 

Valeu Giesta,

 

Alex

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sempre eh uma palavra mto pesada....

 

Pela modelagem, logica e blablabla eh melhor usar o NULL porem ao usar o NULL você tem q prestar atençao q ele eh um traidor....

 

vamos dizer q você faça uma consulta assim

 

select * from tabela where campo <> 1

 

se 'campo ' contiver valores NULLs eles nao serao exibidos, pq quando você compara com algo (<>1 , no nosso caso) eh como se tivesse um IS NOT NULL embutido na consulta. Entao você tem q sempre lembrar de fazer

 

select * from tabela where campo <> 1 or campo IS NULL

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.