none
ISNULL RRS feed

  • Pergunta

  • Tenho uma consulta SQL que eu quero apenas que ela me retorne 0 caso o resultado do campo seja NULL, porém, eu coloquei o camando ISNULL, tentei tratar pelo comando CASE e mesmo assim ela não retorna 0 (Zero)

    O que eu posso estar fazendo de errado?

    SELECT 

                            

    ISNULL(D.DESCONTO,0) as Desconto

    FROM FLAN A   INNER JOIN        SLAN B ON (A.IDLAN = B.IDLAN AND A.CODCOLIGADA = B.CODCOLIGADA)
      INNER JOIN    SPARCELA C ON (C.IDPARCELA = B.IDPARCELA AND C.CODCOLIGADA = B.CODCOLIGADA)
      INNER JOIN SBOLSAALUNO D ON (D.CODCOLIGADA = C.CODCOLIGADA AND D.CODCONTRATO = C.CODCONTRATO AND D.IDPERLET = C.IDPERLET AND C.CODSERVICO = D.CODSERVICO)
      INNER JOIN SBOLSA      E ON (E.CODCOLIGADA = D.CODCOLIGADA AND E.CODBOLSA = D.CODBOLSA)
      WHERE UPPER(E.NOME) LIKE ('%PONTUALIDADE%')
            AND A.IDLAN = 128


    sexta-feira, 11 de janeiro de 2013 13:59

Respostas

  • sim, ao final do seu codigo coloque o codigo abaixo:

    if @@ROWCOUNT = 0 
    begin
     select 'Não ha registros'
    end 


    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Marcado como Resposta Brunomds sexta-feira, 11 de janeiro de 2013 15:20
    sexta-feira, 11 de janeiro de 2013 15:13

Todas as Respostas

  • Bruno, pode ser que o NULL não seja NULL verdadeiramente e sim a palavra NULL em caracteres, tente assim:

    SELECT 
                              
    CASE when D.DESCONTO = 'NULL' then 0
    	 when D.DESCONTO is null then 0 
    	 else D.desconto end as Desconto
    	 
    
    FROM FLAN A   INNER JOIN        SLAN B ON (A.IDLAN = B.IDLAN AND A.CODCOLIGADA = B.CODCOLIGADA)
       INNER JOIN    SPARCELA C ON (C.IDPARCELA = B.IDPARCELA AND C.CODCOLIGADA = B.CODCOLIGADA)
       INNER JOIN SBOLSAALUNO D ON (D.CODCOLIGADA = C.CODCOLIGADA AND D.CODCONTRATO = C.CODCONTRATO AND D.IDPERLET = C.IDPERLET AND C.CODSERVICO = D.CODSERVICO)
       INNER JOIN SBOLSA      E ON (E.CODCOLIGADA = D.CODCOLIGADA AND E.CODBOLSA = D.CODBOLSA)
       WHERE UPPER(E.NOME) LIKE ('%PONTUALIDADE%')
             AND A.IDLAN = 128
    

    
    

    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.


    sexta-feira, 11 de janeiro de 2013 14:08
  • Mas ele não retorna a palavra NULL, ele retorna em BRANCO ta vendo? Eu ja tentei colocar 

    When D.DESCONTO = '' THEN 0

    When D.DESCONTO = ' ' THEN 0

    e NADA...

    Da uma olhada o que ele retorna.

    sexta-feira, 11 de janeiro de 2013 14:59
  • pelo seu print, acredito que o problema é que não esta retornando registro nenhum, de uma olhada no canto inferior direito "0 rows", ou a tabela não tem informações ou os filtros que voce esta utilizando não estão trazendo registros.

    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    sexta-feira, 11 de janeiro de 2013 15:02
  • Huuuummmm bem lembrado é isso mesmo... 

    Nesse caso tem como eu tratar? se o retorno das linhas for 0 eu apresentar algo?
    sexta-feira, 11 de janeiro de 2013 15:05
  • sim, ao final do seu codigo coloque o codigo abaixo:

    if @@ROWCOUNT = 0 
    begin
     select 'Não ha registros'
    end 


    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Marcado como Resposta Brunomds sexta-feira, 11 de janeiro de 2013 15:20
    sexta-feira, 11 de janeiro de 2013 15:13
  • Muito obrigado Alexandre
    sexta-feira, 11 de janeiro de 2013 15:19