查询在 iif ms-access sql 中不返回真值
Posted
技术标签:
【中文标题】查询在 iif ms-access sql 中不返回真值【英文标题】:Query doesn't retrun true value in 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
【问题讨论】:
【参考方案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
表达式也有效。以上是关于查询在 iif ms-access sql 中不返回真值的主要内容,如果未能解决你的问题,请参考以下文章