sqlserver的SQL求帮忙看下

SELECT * FROM FR设备管理 WHERE 备注<>'报废' AND 备注<> '丢失' AND 备注<>'坏'  AND 使用状态<> '已报废'  AND 使用状态<> '坏' AND 备注<> '现场使用'

为什么这样写and想把这些条件筛选掉什么都查不出来了

FineReport callie 发布于 2023-1-5 16:47
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-1-5 16:48(编辑于 2023-1-5 17:28)

and  是全部成立 (为真)才出现数据啊~~

-------------

你这么多条件 只有一个不成立就被筛出去了

----------

SELECT * FROM FR设备管理 WHERE ISnull(备注,'')<>'报废' AND isnull(备注,'')<> '丢失' AND isnull(备注,'')<>'坏'  AND isnull(使用状态,'')<> '已报废'  AND isnull(使用状态,'')<> '坏' AND isnull(备注,'')<> '现场使用'

  • callie callie(提问者) 就是想把这些条件都达成的都筛选出来 备注和使用状态不等于这些
    2023-01-05 16:49 
  • Z4u3z1 Z4u3z1 回复 callie(提问者) 你最好拿一个原始数据给我们看看
    2023-01-05 16:51 
  • callie callie(提问者) 回复 Z4u3z1 他自动把值是NULL的给去掉了怎么办
    2023-01-05 17:21 
  • Z4u3z1 Z4u3z1 回复 callie(提问者) NULL是个特殊值 你按照我上边的改
    2023-01-05 17:22 
  • callie callie(提问者) 回复 Z4u3z1 报错了 在应使用条件的上下文(在 \'(\' 附近)中指定了非布尔类型的表达式。
    2023-01-05 17:26 
最佳回答
0
yzmaDt6d6191220Lv2见习互助
发布于2023-1-5 17:12(编辑于 2023-1-5 17:12)

简化了下你的sql:

SELECT * FROM FR设备管理 WHERE 备注 not in ('报废','丢失','坏','现场使用') AND 使用状态 not in ('已报废','坏') 

筛选不出数据说明数据没有同时满足你写的这个条件的数据,再有一个可能就是你写的sql条件和你期望的条件不一致导致的

  • callie callie(提问者) 他自动把值是NULL的给去掉了怎么办
    2023-01-05 17:21 
  • yzmaDt6d6191220 yzmaDt6d6191220 回复 callie(提问者) 你的意思是这条SQL查出来是有满足条件为备注和使用状态都为null的,但查询出来没有都为null的数据,是这意思吗?
    2023-01-05 17:23 
  • callie callie(提问者) 回复 yzmaDt6d6191220 对的 他把有null的全去掉了 所以现在查不出来东西了
    2023-01-05 17:25 
  • yzmaDt6d6191220 yzmaDt6d6191220 回复 callie(提问者) 假如备注、使用状态这两个字段都同时为null的话,查询出来肯定是有它俩都是null的数据,如果其中一个字段为null,另一个不为null,那查询出来肯定是没数据的
    2023-01-05 17:26 
  • yzmaDt6d6191220 yzmaDt6d6191220 回复 callie(提问者) 如果你是要查询其中某个包含为null的,可以把我上面这个SQL的and 改为or
    2023-01-05 17:27 
  • 2关注人数
  • 318浏览人数
  • 最后回答于:2023-1-5 17:28
    请选择关闭问题的原因
    确定 取消
    返回顶部