如何解决<>不等于在简单的访问查询中不起作用
| 我有以下查询,我要将所有在职员工的CardStatus <> \“ Lost Card \”拉到哪里。SELECT
dbo_Employee.Status,dbo_EmpBadgeNumbers.EmployeeID_FK,dbo_EmpBadgeNumbers.CardID,dbo_EmpBadgeNumbers.CardStatus
FROM dbo_Employee INNER JOIN dbo_EmpBadgeNumbers
ON dbo_Employee.EmployeeID = dbo_EmpBadgeNumbers.EmployeeID_FK
WHERE (((dbo_Employee.Status) = \"Active\")
AND ((dbo_EmpBadgeNumbers.CardStatus) <> \"Lost Card\"));
如果我将<> \“ Lost Card \”替换为\“ Lost Card \”,它会起作用,
如果我将<> \“ Lost Card \”替换为null,它将起作用(这将给出我正在寻找的结果)
如果我将<> \“ Lost Card \”替换为非null,则可以使用。
无论出于什么原因,它都不喜欢\“ <> \”。是的,我知道我可以使用\“ is null \\”方案来获得相同的结果,我很好奇<>为什么不起作用。如果很重要,查询将从链接的ODBC连接拉至sql服务器。
解决方法
将Null与任何内容进行比较只会返回Null:
?Null<>\"Lost Card\"
Null
?Null=\"Lost Card\"
Null
您需要在您的条件中对Null进行显式检查:
WHERE (CardStatus <> \"Lost Card\" Or CardStatus Is Null)
,<>永远不会与Null一起使用。
错误:WHERE CardStatus <>为空
正确:WHERE CardStatus不为空
,我假设您在CardStatus中有两个值:\“ LostCard \”和null
(空)
基本上,当您对null
做任何比较时,结果始终是null
,并且总是失败。这就是创建isNull的原因。
,然后我会尝试
CardStatus is null
OR NOT ( CardStatus = \"Lost Card\" )
原始的NOT CardStatus = \“ Lost Card \”不会等同于
(NOT CardStatus) = \"Lost Card\"
因为它的基本类型是字符的类型,所以将基于\“ = \”进行比较,然后应用逻辑NOT ...,例如
NOT (CardStatus = \"Lost Card\")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。