<>不等于在简单的访问查询中不起作用

问题描述

| 我有以下查询,我要将所有在职员工的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\")
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...