【问题标题】:Query doesn't retrun true value in iif ms-access sql查询在 iif ms-access sql 中不返回真值
【发布时间】:2020-12-05 17:55:45
【问题描述】:

我想得到RollNo,如果它在满足某些条件时存在,否则它应该返回-1。但在我的情况下,当它存在时它会返回 RollNo,否则它会返回 nothing

SQL 在:-

SELECT iif(isnull(RollNo),-1,RollNo) from students where SName = "sf" and FName= "da" and 
DOB=#7/16/2020# and ClassID = 0

【问题讨论】:

    标签: c# sql database ms-access


    【解决方案1】:

    嗯。 . .如果你总是想只返回一行,那么我建议聚合:

    SELECT NZ(MAX(RollNo), -1)
    FROM students 
    WHERE SName = "sf" and FName= "da" and DOB=#7/16/2020# and ClassID = 0;
    

    如果没有任何内容与WHERE 子句匹配,则MAX(RollNo) 返回NULL -- 由NZ() 转换为-1

    【讨论】:

    • 这适用于访问。但我必须在 C# 代码中得到这个。 nz 不适用于 c#
    • @MuhammadRizwan 这行得通吗:SELECT IIF(ISNULL(MAX(RollNo)), -1, MAX(RollNo) ?
    • @TimBiegeleisen 这行得通。我已经检查了这个查询。
    • @MuhammadRizwan 。 . .你能确定查询的哪一部分不工作吗?也许COALESCE() 有效。 NZ() 绝对是 MS Access 的一部分:techonthenet.com/access/functions/advanced/nz.php
    • @MuhammadRizwan 。 . .您可以将其替换为IIF(MAX(RollNo) IS NULL, MAX(RollNo), -1)
    【解决方案2】:

    这将返回一行,字段为 RollNo

    SELECT iif(isnull(max(RollNo)),-1,max(RollNo)) from students where SName = "sf" and
     FName= "da" and DOB=#7/16/2020# and ClassID = 0
    

    如果where子句中的条件满足则返回RollNo否则返回-1

    【讨论】:

    • 有趣的ISNULL(一种 VBA 方法)与 ODCB/OLEDB 访问连接一起工作。最好使用 SQL 的IS NULL 表达式。
    • 我不知道,但这有效。 IS NULL 表达式也有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多