or que comparar uma variável de data SQL com nulo se comporta dessa maneir
Acabei de encontrar um problema interessante com um procedimento que estou escrevendo em SQ
No meu processo, tenho duas datas, que são parâmetros opcionais padrão como NULL, quero verificar se esses parâmetros não são nulos e se não executam parte do meu processo, se forem nulos, a parte extra do processo é ignorada.
Eu fiz um @ bastante básiIF(@dateVariable <> NULL AND @DateVariable2 <> NULL)
, mas a instrução if nunca funciona, mesmo que as variáveis não sejam nulas, eu assumiria que o SQL está lutando para comparar a data com um NULL, o que é estranho, pois o datetime é nul
Para contornar isso, acabei de fazerIF(DateVariable IS NOT NULL)
que funciona corretamente. Eu também tenteiIF( ISNULL(@DateVariable,'') <> '')
que também funciona corretamente
Então, minha pergunta é por que o primeiro IF não funciona, mas o segundo e o terceiro IF funcionam, pois ambos devem em algum momento comparar o conteúdo da variável como nul
Exemplo
----- Falha -----
DECLARE @Date DATETIME
SET @Date = CURRENT_TIMESTAMP
IF (@Date <> NULL)
BEGIN
print('a')
END
----- Trabalho ----
DECLARE @Date DATETIME
SET @Date = CURRENT_TIMESTAMP
IF (ISNULL(@Date,'') <> '')
BEGIN
print('a')
END
DECLARE @Date DATETIME
SET @Date = CURRENT_TIMESTAMP
IF (@Date IS NOT NULL)
BEGIN
print('a')
END