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

时间:2014-08-01 10:28:36

标签: c# sql-server

我的设计中有一个复选框(Active)。它存储0或1.我必须根据复选框值搜索项目,即,活动或非活动或两者。对于活动我可以使用1而对于非活动我可以使用0.但我需要使用所有条件(true,false,true和false)。

2 个答案:

答案 0 :(得分:4)

假设您已经使用WHERE语句SomeConditions进行检查,那么您只需执行此操作:

对于活跃......

WHERE SomeConditions AND Active = 1

非活动......

WHERE SomeConditions AND Active = 0

要么......

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

答案 1 :(得分:2)

假设:

  • 您的列中有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 for 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);