Re: [firebase-br] Como montar a string de endereço?
eduardo
eduardo em icontroller.com.br
Seg Maio 30 17:20:23 -03 2005
Oi David
Se todos os campos, quando vazios, assumirem NULL, então você pode usar
assim:
SELECT COALESCE(TIPOLOGRADOURO, '')||
COALESCE(' '||NOMELOGRADOURO, ' ')||
COALESCE(', '||NUMERO, '')||
COALESCE(' - '||COMPLEMENTO, '') FROM TABELA
Isto para um formato 'Rua Getúlio Vargas, 1092 - casa'
observe que ' '||NULL retorna NULL então valerá o segundo parâmetro do
COALESCE
Se os valores vazios estiverem como '', então você terá que utilizar uma
estrutura CASE
TIPOLOGRADOURO||
CASE WHEN NOMELOGRADOURO > '' THEN ' '||NOMELOGRADOURO ELSE '' END||
CASE WHEN NUMERO > '' THEN ', '||NUMERO ELSE '' END||
CASE WHEN COMPLEMENTO > '' THEN ' - '||COMPLEMENTO ELSE '' END
AS ENDERECO_FORMATADO
Se você não tiver certeza se NULL ou não terá que utilizar um misto
entre os dois, tipo
CASE WHEN COALESCE(NOMELOGRADOURO,'') > '' THEN ...
Obs. Quanto menos funções utilizar no SELECT, melhor a performance,
embora muitas vezes não seja siginificativa em resultsets pequenos a médios.
[]s Eduardo
dvdmengarda em hotmail.com wrote:
> Olá!
>
> Com base na tabela de clientes, preciso apresentar uma coluna com logradouro, tipo de logradouro, número e complemento. A questão é como prever o uso da ', ' para separá-los.
>
> Se fosse via programação normal, eu usaria:
>
> cEnd := c.endereco;
> if c.tipologradouro <> '' then cEnd := cEnd + ', ' + c.tipologradouro;
> if c.numero <> '' then cEnd := cEnd + ', ' + c.numero;
> if c.complemento <> '' then cEnd := cEnd + ', ' + c.complemento;
>
> Como posso transportar isso para uma query? É possível?
>
>
> Grato!
>
>
>
> David
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista