我有一个包含以下各列的表:
[Id], [Name], [Shampoo], [ShowerGel], [HairConditioner]
[Shampoo]
,[ShowerGel]
和[HairConditioner]
列指定条目的类型。
我还有三个复选框(bit
变量),它们告诉我是要显示特定条目还是全部条目。
例如,如果仅选中ShowerGel
复选框,则返回属于ShowerGel
类型的值。
或者,如果选中了ShowerGel
和HairConditioner
复选框,则仅返回属于这些类型的复选框。
如果所有复选框均已选中(或所有复选框均未选中),则显示所有条目。
问题是:如何使用 ONLY (仅WHERE
子句来实现?如果可能的话。
任何帮助/提示都将不胜感激。
答案 0 :(得分:1)
假设@Shampoo
,@ShowerGel
和@HairConditioner
是类型bit
的变量,由复选框的值填充。进一步假设您要显示与任何类型匹配的项目。例如。如果某物是洗发水和沐浴露,并且选中了沐浴露复选框,但没有洗发水,则无论如何都要显示一些东西。
WHERE @Shampoo = 0
AND @ShowerGel = 0
AND @HairConditioner = 0
OR @Shampoo = 1
AND [Shampoo] = 1
OR @ShowerGel = 1
AND [ShowerGel] = 1
OR @HairConditioner = 1
AND [HairConditioner] = 1
如果未全部选中,则前三个处理情况。其他情况是部分或全部被检查。
答案 1 :(得分:0)
假设列的数据类型为bit
,则只需在OR
子句中具有where
个条件,如下所示
Declare @IsShampoo bit, @IsShowerGel bit, @IsHairConditioner bit -- Checkbox values
select *
from @YourTbale
where Shampoo = @IsShampoo
OR ShowerGel = @IsShowerGel
OR HairConditioner = @IsHairConditioner