检查SELECT语句条件是否为真

时间:2013-04-25 09:35:39

标签: c# asp.net sql sql-server sql-server-2008

string  test = "SELECT count(*) FROM table where email=@email AND active=@active";

您好,是否可以使用C#检查两个条件是否为真,或者只有其中一个条件为真?

int count = testCMD.ExecuteNonQuery();

我尝试过使用上面的代码,但我不确定我是否理解它是如何工作的......只有在两个条件都成立的情况下,才算数为1?

3 个答案:

答案 0 :(得分:2)

Count将返回两个条件都为真的结果数。如果你想检查一个或另一个,那么使用OR代替AND。

Count

答案 1 :(得分:2)

  只有在两个条件都为真的情况下,

才会计为1?

即可。您在查询中使用AND运算符。

  

是否可以使用C#检查两个条件是否为真或   如果只有其中一个是真的吗?

使用上述查询,。你不能。您需要为每个参数创建两个不同的查询,或者使用OR运算符代替AND来查看其中任何一个条件是否为真。但是OR你无法确定哪一个是真的。

答案 2 :(得分:1)

尝试:

string test = "
    select COUNT(*) from(
        select case when (SELECT count(*) FROM table where email=@email AND active=@active)>0 then 1 else null end Num
        union all
        select case when (SELECT count(*) FROM table where email=@email OR active=@active)>0 then 1 else null end Num
    )x where Num is not null"

如果两个条件都为真,则返回2,如果其中任何一个为真,则返回1,如果两个都为假,则返回0。

并使用ExecuteScalar()代替ExecuteNonQuery()(返回受影响的行数)。

i.e. int count  = (Int32)testCMD.ExecuteScalar();