Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Resolução com endereço 2

Olá pessoal! Resolvi o exercício com o código a seguir porém fiquei na dúvida de como fazer para exibir o endereço 2 apenas caso ele exista e sem ficar com vírgulas sobrando como no meu código. Imagino que seja necessário usar os operadores IS NOT NULL e/ou CASE mas não consegui resolver. Alguém pode me dar alguma luz?

SELECT
NOME as Nome
, CONCAT(ENDERECO_1, ', ', ENDERECO_2, ', ', CIDADE, '-', ESTADO) AS 'Endereço'
FROM tabela_de_clientes
;
2 respostas
solução!

Oii, Rafael! Tudo bem?

Parabéns por estar praticando os exercícios e querer melhorá-lo, isso é muito importante!

Seu raciocínio está na linha certa, você pode usar o IS NOT NULL para verficar se o endereço exista e para evitar as vírgulas extras no seu código, como sugestão pode-se utilizar a função CONCAT_WS() no lugar da função CONCAT(), pois ela permitirá concatenar os valores do endereço separados por vírgula e espaço.

Como sugestão, recomendo a leitura da documentação oficial que contém um conteúdo muito bom de apoio para expandir seus conhecimentos.

A página está em Inglês, mas você pode usar o tradutor do navegador ou clicar na página com o botão direito do mouse e escolher a opção "Traduzir para o Português".

Espero ter ajudado. Qualquer dúvida, não hesite em recorrer ao fórum.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Excelente, Nathalia, muito obrigado! Consegui resolver com a sua sugestão e ficou assim:

SELECT
NOME as Nome
, CONCAT_WS(', '
            , ENDERECO_1
            , CIDADE
            , ESTADO) 
AS 'Endereço'
FROM tabela_de_clientes
WHERE 
ENDERECO_2 IS NULL
OR TRIM(ENDERECO_2) = ''
UNION
SELECT
NOME as Nome
, CONCAT_WS(', '
            , ENDERECO_1
            , ENDERECO_2
            , CIDADE
            , ESTADO) 
AS 'Endereço'
FROM tabela_de_clientes
WHERE 
ENDERECO_2 IS NOT NULL
AND NOT (TRIM(ENDERECO_2) = '')
;

Imagino que dê para tornar meu código mais elegante (deixando as condições dentro do SELECT caso seja possível) mas dessa forma já funciona como quero.