我想检查WHERE子句中的值。
如何将这个伪代码转换为真实的SQL代码?
declare @includeReserved int = 0 -- can be 0, 1 or 2
select *
from Tickets
where
(
-- if @includeReserved = 0:
ticketIsReserved = 0
-- else if @includeReserved = 1:
ticketIsReserved = 0 or ticketIsReserved = 1
-- else if @includeReserved = 2:
ticketIsReserved = 1
)
答案 0 :(得分:2)
使用and
和or
:
where (@includeReserved = 0 and ticketIsReserved = 0) or
(@includeReserved = 1 and ticketIsReserved in (0, 1)) or
(@includeReserved = 2 and ticketIsReserved = 1)
您可能要包括:
or @includeReserved not in (0, 1, 2)
如果您根本不想过滤其他值。
答案 1 :(得分:2)
尝试案例条件...
merge
答案 2 :(得分:0)
使用AND
和OR
:
select *
from Tickets
where
(
(@includeReserved = 0 and ticketIsReserved = 0)
or
(@includeReserved = 1 and ticketIsReserved in (0,1))
or
(@includeReserved = 2 and ticketIsReserved = 1)
)
答案 3 :(得分:0)
听起来您想要这种逻辑:
select *
from Tickets
where
(@includeReserved = 0 and ticketIsReserved = 0) or
(@includeReserved = 1 and ticketIsReserved in (0, 1)) or
(@includeReserved = 2 and ticketIsReserved = 1);