TSQL - Cláusula Where com variávens nulas

Esta dica é muito simples mas não deixa de útil, principalmente se estivermos a concatenar strings para casos em que uma variável possa ser nula e queiramos usá-la numa cláusula Where!
Por exemplo: 

DECLARE NVARCHAR @SQL = 'SELECT ... FROM ...'

IF(@IDAluno IS NOT NULL)
     SET @SQL = @SQL + '' WHERE [IDAluno] = ' + CAST(@IDAluno AS NVARCHAR)

 Além de eu próprio já ter feito o exemplo de cima, já vi alguns artigos com uso semelhante.
Uma melhor solução seria: 

SELECT ...
FROM ...
WHERE ([IDAluno] = @IDAluno  OR @IDAluno IS NULL)

Um obrigado ao Paulo Moreira pelo conselho ;)

Published 14-7-2011 0:12 por Guilherme Cardoso
Filed under:

Comments

# re: TSQL - Cláusula Where com variávens nulas

Ou melhor

SELECT ...

FROM ...

WHERE ISNULL(@IDAluno,[IDAluno]) = [IDAluno]

quinta-feira, 14 de Julho de 2011 9:36 by João Rocha

# re: TSQL - Cláusula Where com variávens nulas

Boas João,

Corrije-me se estiver errado, mas se usar o exemplo que estás a mostrar vou sempre usar a função ISNULL, enquanto que se fizer a comparação como mostrei neste artigo se a variável @IDAluno não for nula, então não chego a fazer a segunda comparação que tenho na cláusula where. Isto a nível de performance não é melhor?

Abraço

segunda-feira, 18 de Julho de 2011 10:06 by Guilherme Cardoso

Leave a Comment

(requerido) 
(requerido) 
 
(opcional)
(requerido) 
If you can't read this number refresh your screen
Enter the numbers above: