problema com o case

Firebird

19/01/2006

select (coalesce(nome_razao,´´) || case when nome_razao <> ´´ and nome_fantasia <> ´´ then ´ --> ´ else ´´ end || coalesce(nome_fantasia,´´)) as Campo1Result, cod_cliente as Codigo from clientes

só quero que apareça este símbolo --> quando os campos nome_razao e nome_fantasia não forem nulos.

o problema é o seguinte: mesmo quando a primeira condição falha, ou seja, vai entrar no else, fica com espaços fazios do tamanho do símbolo -->


Raserafim

Raserafim

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

19/01/2006

tente assim:

select
  coalesce(nome_razao,nome_fantasia) ||
  (case
     when not (nome_razao is null) and
          not (nome_fantasia is null)
     then ´ --> ´
     else ´´
   end) ||
  (case
     when nome_razao is null
     then ´´
     else coalesce(nome_fantasia,´´)
   end) as Campo1Result,
  cod_cliente as Codigo
from
  clientes



GOSTEI 0
Raserafim

Raserafim

19/01/2006

emerson, a sua forma deu quanse certo. quando o campo estava em branco e não nulo não funcionava tb.

mas vc me deu uma luz para fazer de outra forma. acabei fazendo assim:

select 
  (case
    when (not (nome_razao is null) and (nome_razao <> ´´)) and (not (nome_fantasia is null) and (nome_fantasia <> ´´)) then
      nome_razao || ´ --> ´ || nome_fantasia
    when ((nome_razao is null) or (nome_razao = ´´)) and (not (nome_fantasia is null) and (nome_fantasia <> ´´)) then
      nome_fantasia
    when (not (nome_razao is null) and (nome_razao <> ´´)) and ((nome_fantasia is null) or (nome_fantasia = ´´)) then
      nome_razao
  end) as Campo1Result, cod_cliente as PK

from
  clientes



GOSTEI 0
Emerson Nascimento

Emerson Nascimento

19/01/2006

´limpe´ um pouco mais sua instrução:
select 
  (case 
    when (coalesce(nome_razao,´´) <> ´´) and (coalesce(nome_fantasia,´´) <> ´´) then 
      nome_razao || ´ --> ´ || nome_fantasia
    when (coalesce(nome_razao,´´) = ´´) and (coalesce(nome_fantasia,´´) <> ´´) then
      nome_fantasia 
    when (coalesce(nome_razao,´´) <> ´´) and (coalesce(nome_fantasia,´´) = ´´) then 
      nome_razao 
  end) as Campo1Result, cod_cliente as PK 
from 
  clientes



GOSTEI 0
Raserafim

Raserafim

19/01/2006

valeu emerson pela atenção


GOSTEI 0
POSTAR