The bitwise operator for checking whether a flag is set in SQL is &. The WHERE clause needs to evaluate to a BOOLEAN expression, like this:
create table #temp (id int, username varchar(20), flags int)
insert into #temp values
(1, 'User1', 6 /* (2 | 4) */),
(2, 'User2', 4),
(3, 'User3', 14 /* (2 | 4 | 8) */)
declare @ConditionOne int = 2
select *
from #temp
where flags & @ConditionOne <> 0
declare @ConditionTwo int = 4
select *
from #temp
where flags & @ConditionTwo <> 0
declare @ConditionThree int = 8
select *
from #temp
where flags & @ConditionThree <> 0
drop table #temp
These queries return the following resultsets:
id username flags
----------- -------------------- -----------
1 User1 6
3 User3 14
id username flags
----------- -------------------- -----------
1 User1 6
2 User2 4
3 User3 14
id username flags
----------- -------------------- -----------
3 User3 14