Estou construindo alguma consulta SQL em C #. Ele será diferente dependendo de algumas condições armazenadas como variáveis no código.
string Query="SELECT * FROM Table1 WHERE 1=1 ";
if (condition1)
Query += "AND Col1=0 ";
if (condition2)
Query += "AND Col2=1 ";
if (condition3)
Query += "AND Col3=2 ";
Funciona, mas testar 1 = 1 não parece elegante. Se eu não usasse, teria que lembrar e verificar sempre se a palavra-chave "where" já foi adicionada ou não à consulta.
Existe uma solução mais agradável?
Select 42
perguntas que estávamos recebendo. (não era divertido tentar rastrear a fonte)
If I didn't use it, I would have to remember and check every time if "where" keyword was already added or not to the query
- É por isso que você usa 1 = 1
. O mecanismo de banco de dados o otimiza de qualquer maneira, portanto, embora possa parecer feio, é de longe a maneira mais fácil de resolver o problema.
42 = 42
;-)