Buduję jakąś SQL kwerendy w języku C #. Będzie się różnić w zależności od niektórych warunków przechowywanych jako zmienne w kodzie.
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 ";
Działa, ale testowanie 1 = 1 nie wydaje się eleganckie. Gdybym go nie używał, musiałbym za każdym razem pamiętać i sprawdzać, czy słowo kluczowe „gdzie” zostało już dodane do zapytania, czy nie.
Czy jest lepsze rozwiązanie?
Select 42
zapytań, które otrzymywaliśmy. (niezbyt zabawna była próba wyśledzenia źródła)
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
- Dlatego używasz 1 = 1
. Silnik bazy danych i tak go optymalizuje, więc chociaż może wyglądać brzydko, jest to zdecydowanie najłatwiejszy sposób rozwiązania problemu.
42 = 42
;-)