表:
name | isActive //(bit - not nullable)
___________________
a 1
b 1
c 0
d 0
... ...
用户界面中的我有:
用户可以选择他是否只想要Active ones
,Non Active ones
,Nothing
我正在创建一个可以包含以下值之一的向量:'11,10,01,00'
10 =给我活跃,不要给我 - 非活跃
01 =给我非活跃,不要给我 - 活跃
11,给我两个......没什么......
这是开始。
但我正在查询查询中where
子句的优雅方式:
我的拍摄:
select ...
WHERE isActive = CASE WHEN LEFT(@vector, 1) = RIGHT(@vector, 1)
AND RIGHT(@vector, 1) = '1' THEN isActive
ELSE
... ( more option calculations ( bad and long and non elegant ...)
END
任何优雅的帮助?
答案 0 :(得分:0)
我不明白00 - NOTHING
是什么意思。实际上,这意味着您不需要执行查询
你可以试试这个:
...
WHERE isActive=@isActive OR @isActive IS NULL
当您关心isActive
时,您将1
或0
传递给@isActive
,否则就会传递NULL
。
但是此查询不会使用isActive
之上的索引。