I am designing a SQL query to extract all records from a given table. But the trick here is that this logic is based on a numeric database field. So there are 4 choices: 0,1,2,3. If user selects 0,1, or 2, then my query returns rows with the specified value. But if they choose 3, it should return all of the rows. How do I do this in SQL? I know if this was a string, I could do something like:
WHERE = CASE WHEN = 3 THEN ‘%’ ELSE END
But in this case, is an integer. Sounds relatively simple but I’m getting errors.
The simplest way is to do this:
If your interested in better optimization, then you can do this, but it is less maintainable:
If I were forced to implement this functionality, then I would probably do this, just to make things clear:
Hopefully, I won’t ever have to implement a system that mixes flags and data value in this way.
UPDATED
Here is a version that should work with your expanded requirements (this requires one of the newer versions of SQL Server, I think):