疲倦的大脑-也许您可以帮忙。
我的表有两个位字段:
1) TestedByPCL
2) TestedBySPC
两者都可能= 1。
用户界面具有两个对应的复选框。 在代码中,我将检查转换为int。

int TestedBySPC = SearchSPC ? 1 : 0;
int TestedByPCL = SearchPCL ? 1 : 0;

我的WHERE子句如下所示:

WHERE TestedByPCL = {TestedByPCL.ToString()} AND TestedBySPC = {TestedBySPC.ToString()} 

问题是当仅选中一个复选框时,我要返回将相应字段设置为1或将两个字段都设置为1的行。
现在,当两个字段都设置为1时,我的WHERE子句需要选中两个复选框,而不是仅选中一个。
因此,如果选中一个复选框,则返回该字段= 1的记录,而不管另一个字段是否为1。

#1楼 票数:1

第二次尝试(我想我现在知道了):

WHERE ((TestedByPCL = {chkTestedByPCL.IsChecked} AND TestedBySPC = {chkTestedBySPC.IsChecked}) 
OR 
(TestedByPCL = 1 AND TestedBySPC = 1 AND 1 IN ({chkTestedByPCL.IsChecked}, {chkTestedBySPC.IsChecked})))

误解了这个问题。 AND更改为 OR

 
 
 
  
  WHERE TestedByPCL = {chkTestedByPCL.IsChecked} OR TestedBySPC = {chkTestedBySPC.IsChecked}
 
  

也:

  1. SQL Server没有Boolean数据类型 ,它的最接近的选择是bit数据类型。

  2. 大括号的用法建议使用字符串串联来构建where子句。 在处理复选框时,这可能没什么大不了的,但是在处理自由文本输入时,这是安全隐患,因为它是SQL注入攻击的门户。 尽可能更好地使用参数。

  ask by DeveloperDan translate from so

未解决问题?本站智能推荐:

3回复

SQL:如何在SELECT和WHERE语句中使用布尔逻辑

我是SQL的新手。 我有一个复杂的SQL SELECT语句,此问题已简化。 我正在继承代码,需要避免对其进行过多更改。 我需要添加一些仅在布尔值( @myboolean )为true时才选择额外列的功能: 所以: 当@myboolean为false时,应选择字段@mybool
1回复

使用通配符和强制性子句查询

我有两个表,TableA和TableB必须以这种方式连接 ColumnA必须匹配 ColumnB和ColumnC可以匹配(如果不匹配,则应视为通配符) 我在下面写了这个查询 换句话说,ColumnA应该与ColumnA匹配,而如果ColumnB(来自TableB)为NULL,
1回复

SQLServer:“布尔”WHERE子句中的子查询

我有使用以下结构的T-SQL查询(SQL Server 2008/2012): 这可以很好地工作,并使用NULL参数自动优化WHERE子句中所有AND'ed部分。 但是,当我对子查询执行相同的操作时,即使参数为NULL,优化器似乎仍会执行子查询: 我的问题是,为什么优化程序甚至会考虑
3回复

建立动态的不失败where子句

我已经建立了一个界面,用户可以在其中从数据库中获取记录。 用户可以选择指定0个或多个过滤器。 共有四个过滤器A,B,C,D(假设这些是特定表格中的字段) 这是我的查询应如下所示: 我试图提供一种表达查询的方法,但是当指定了特定过滤器时,将应用该过滤器,如果未指定,则将其忽略。 但这
1回复

带布尔值字段的SQL视图

我面前的任务确实令我感到困惑。 我有以下格式的表Employee 。 employee_id是用作主键的自动递增字段。 employee_number是公司给员工的ID,在整个表中是唯一的。 还有一个名为Employee_Assignment的表,其中包含员工对项目的分配信息。 该
3回复

Sql-在where子句中使用布尔逻辑

我有一个看起来像这样的where子句 它基本上允许为报告指定ceratin范围内的过滤如果省略了值,那么它们默认为非常大的正数或负数 我遇到的问题是某些用户没有定义Tolerance,这意味着他们的Tolerance百分比总是为零, 所以如果报告指定了这样的标准 然后它不包括没有
1回复

在case语句中使用Max(boolean)

我在数据库中制作了一个临时帐户表,其中包含提供有关帐户信息的布尔值。 一些客户有多个帐户,所以我将它们组合在一起并试图查看 MAX(Boolean) 以设置状态字段。 我的查询有点像: 它检查 Max(Boolean) = 1 是否会正确计算为 True 的任何地方,但如果我执行 Max(Boole
3回复

复杂的SQLwhere子句:是否考虑逻辑

我有一个复杂的SQL where子句,该子句由于需求变化而变得更加复杂。 有四种基本情况,每种情况具有其他因素的不同组合。 (在我看来)将这四种情况作为where子句的单独分支,并在每个分支中重复多余的条件,更具可读性。 但是我不知道数据库引擎将如何优化它。 这是多余形式的表达。 我