【问题标题】:Check if SELECT statement conditions are true检查 SELECT 语句条件是否为真
【发布时间】:2013-04-19 03:24:14
【问题描述】:
string  test = "SELECT count(*) FROM table where email=@email AND active=@active";

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

int count = testCMD.ExecuteNonQuery();

我已经尝试使用上面的代码,但我不确定我是否理解它是如何工作的。只有当两个条件都为真时才会计数为 1?

【问题讨论】:

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


    【解决方案1】:

    Count 将返回两个条件都为真的结果数。如果您想检查其中一项,请使用 OR 而不是 AND。

    Count

    【讨论】:

      【解决方案2】:

      仅当两个条件都为真时才计数为 1?

      是的。您在查询中使用 AND 运算符。

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

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

      【讨论】:

        【解决方案3】:

        试试:

        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();
        

        【讨论】:

        • 我会试试这个然后回来..似乎是我要找的..谢谢
        • ExecuteNonQuery 将返回受影响的行数,这不是您的查询返回的值。所以只有使用上面的 Query 并不能解决 OPs 问题。使用带有上述查询的 ExecuteScalar 方法将给出 OP 想要的结果
        • 我接受了这个作为答案,因为它直接解决了我的问题。感谢您的帮助
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-07
        • 1970-01-01
        • 2022-12-09
        • 2020-10-27
        • 1970-01-01
        • 2017-12-31
        • 1970-01-01
        相关资源
        最近更新 更多