SQL根据复选框值返回数据

时间:2018-07-09 23:47:19

标签: sql

我有一个包含以下各列的表:

[Id], [Name], [Shampoo], [ShowerGel], [HairConditioner]

[Shampoo][ShowerGel][HairConditioner]列指定条目的类型。

我还有三个复选框(bit变量),它们告诉我是要显示特定条目还是全部条目。

例如,如果仅选中ShowerGel复选框,则返回属于ShowerGel类型的值。

或者,如果选中了ShowerGelHairConditioner复选框,则仅返回属于这些类型的复选框。

如果所有复选框均已选中(或所有复选框均未选中),则显示所有条目。

问题是:如何使用 ONLY (仅WHERE子句来实现?如果可能的话。

任何帮助/提示都将不胜感激。

2 个答案:

答案 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