none
valor vazio é considerado como verdadeiro RRS feed

  • Pergunta


  • declare
     @valor DATETIME
     
     set @valor  = ''
     
     select ISDATE(@valor)

     

    declare
     @valor float
     
     set @valor  = ''
     
     select ISNUMERIC(@valor)

    porque nos dois casos está considerando como valor e data?

    como é vazio deveria ser valor zero (0) e não um (1).

    quinta-feira, 11 de outubro de 2012 19:17

Respostas

  • Rafa, na verdade, como a variavel não tem valor a validação que esta sendo feita não é do valor da variavel mas sim do tipo de dados dela, por exemplo, mude o tipo de dados na declaração da variavel de data para int e float para char e voce verá que o resultado será 0:

    declare
      @valor int
      
      set @valor  = ''
      
      select ISDATE(@valor)
     
     
     
    declare
      @valor varchar(10)
      
      set @valor  = ''
      
      select ISNUMERIC(@valor)
    


    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.

    • Sugerido como Resposta Alexandre Matayosi quinta-feira, 11 de outubro de 2012 19:23
    • Marcado como Resposta rafa-martin quinta-feira, 11 de outubro de 2012 19:30
    quinta-feira, 11 de outubro de 2012 19:23
  • Rafa isto acontece porque quando atribuímos aspas simples em alguns tipos do SQL, o mesmo interpreta que este valor é o default do tipo (float = 0, datetime = 1900-01-01 00:00:00.000 e etc...). Faça o teste você mesmo:

    DECLARE @valorDatetime DATETIME
    
    SET @valorDatetime  = ''
    
    SELECT ISDATE(@valorDatetime)
    SELECT @valorDatetime
    
    SET @valorDatetime  = NULL
    
    SELECT ISDATE(@valorDatetime)
    SELECT @valorDatetime
    
    
    
    ------FLOAT
    
    
    
    DECLARE @valorFloat FLOAT
    
    SET @valorFloat  = ''
    
    SELECT ISNUMERIC(@valorFloat)
    SELECT @valorFloat
    
    SET @valorFloat = NULL
    
    SELECT ISNUMERIC(@valorFloat)
    SELECT @valorFloat




    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    quinta-feira, 11 de outubro de 2012 19:29

Todas as Respostas

  • Rafa, na verdade, como a variavel não tem valor a validação que esta sendo feita não é do valor da variavel mas sim do tipo de dados dela, por exemplo, mude o tipo de dados na declaração da variavel de data para int e float para char e voce verá que o resultado será 0:

    declare
      @valor int
      
      set @valor  = ''
      
      select ISDATE(@valor)
     
     
     
    declare
      @valor varchar(10)
      
      set @valor  = ''
      
      select ISNUMERIC(@valor)
    


    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.

    • Sugerido como Resposta Alexandre Matayosi quinta-feira, 11 de outubro de 2012 19:23
    • Marcado como Resposta rafa-martin quinta-feira, 11 de outubro de 2012 19:30
    quinta-feira, 11 de outubro de 2012 19:23
  • Rafa isto acontece porque quando atribuímos aspas simples em alguns tipos do SQL, o mesmo interpreta que este valor é o default do tipo (float = 0, datetime = 1900-01-01 00:00:00.000 e etc...). Faça o teste você mesmo:

    DECLARE @valorDatetime DATETIME
    
    SET @valorDatetime  = ''
    
    SELECT ISDATE(@valorDatetime)
    SELECT @valorDatetime
    
    SET @valorDatetime  = NULL
    
    SELECT ISDATE(@valorDatetime)
    SELECT @valorDatetime
    
    
    
    ------FLOAT
    
    
    
    DECLARE @valorFloat FLOAT
    
    SET @valorFloat  = ''
    
    SELECT ISNUMERIC(@valorFloat)
    SELECT @valorFloat
    
    SET @valorFloat = NULL
    
    SELECT ISNUMERIC(@valorFloat)
    SELECT @valorFloat




    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    quinta-feira, 11 de outubro de 2012 19:29