如何在sql server中使用true, false和两个条件

本文关键字:false 条件 两个 true sql server | 更新日期: 2023-09-27 18:15:53

我的设计中有一个复选框(Active)。它存储0或1。我必须根据复选框的值来搜索项目。,或活跃或不活跃,或两者兼而有之。对于活动的我可以用1,对于非活动的我可以用0。但是我需要使用所有的条件(真,假,真,假)。

如何在sql server中使用true, false和两个条件

假设您已经有一个WHERE语句,您正在检查SomeConditions,那么您只需这样做:

为活跃…

WHERE SomeConditions AND Active = 1
不活跃的…

WHERE SomeConditions AND Active = 0
要么…

// Just leave the Active out of the WHERE statement
WHERE SomeConditions

假设:

  • 列中,0代表非活动,1代表活动
  • 传递0为非活动,1为活动,2为两个参数@active

现在改变你的WHERE子句如下:

-- Active is the column name and @active is the query parameter
WHERE {existingConditions} AND (@active = 2 OR @active = Active)
更新:

因为你没有添加适当的标签,我将基于我的答案在windows窗体和WPF的UI和ADO。. NET用于数据访问。对于其他技术,您可以使用类似的方法。

对于winforms:让我们说你的CheckBox有它的ThreeState属性(WPF中的IsThreeState)设置为true,然后你可以获得并传递这样的值:

SqlCommand cmd = conenction.CreateCommand();
sbyte active;
switch (checkBox1.CheckState)
{
    case CheckState.Checked:
        active = 1;
        break;
    case CheckState.Unchecked:
        active = 0;
        break;
    case CheckState.Indeterminate:
        active = 2;
        break;
}
/*
// For WPF:
if (checkBox1.IsChecked.HasValue)
    active = checkBox1.IsChecked ? 1 : 0;
else
    active = 2;
*/
cmd.Parameters.AddWithValue("@active", active);