Sql Server Not IN的坑

1
2
3
4
5
6
7
8
;with t as (select 1 id
    union all select 2
    union all select 3
    union all select null)
 
select case when 5 in (select id from t) then 1
                    when 5 not in (select id from t) then -1
                    else 0 end

  输出为0而不是-1

Not In 中包含null值 返回false

1
2
3
4
5
6
7
8
;with t as (select 1 id
    union all select 2
    union all select 3
    union all select null)
 
select case when null in (select id from t) then 1
                    when null not in (select id from t) then -1
                    else 0 end

  null也不行

      输出为0而不是-1

除非集合中不包含null值

1
2
3
4
5
6
7
8
9
;with t as (select 1 id
    union all select 2
    union all select 3
    --union all select null
    )
 
select case when 5 in (select id from t) then 1
                    when 5 not in (select id from t) then -1
                    else 0 end

  --输出-1

 

posted @   z.seven  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示