select 1 where 2 not in (3,null) --没有输出结果集 select 1 where 2 in (2,null) --输出1
意思就是 如果有null值的时候 最好不要使用 not in ,否则查询不到结果
isnull(xxx, 'NULL')这样就行了
where条件中对null的判断是false,也就是不返回
select 1 where 2 in (2,null) 2 in (2,null) (ture or false) true --输出1
select 1 where 2 in (2,null) 2 in (2,null) (ture or false) true --输出1 select 1 where 2 not in (3,null) 2 not in (3,null) not (false or false)= true??? 这个咋解释???
T-SQL是三值逻辑,true、false和unknown,not true=false,not false=true,not unknown=unknown. 另外,or是短路逻辑,只要其中一个为true,整个谓词就为true, 所以:select 1 where 2 in (2,null) 为true,返回1 而:select 1 where 2 not in (3,null) 2不等于3,同时2和null也不能匹配,所以为false
select 1 where 2 in (2,null) --输出1
2 in (2,null)
(ture or false) true
--输出1
2 in (2,null)
(ture or false) true
--输出1
select 1 where 2 not in (3,null)
2 not in (3,null)
not (false or false)= true???
这个咋解释???
另外,or是短路逻辑,只要其中一个为true,整个谓词就为true,
所以:select 1 where 2 in (2,null) 为true,返回1
而:select 1 where 2 not in (3,null)
2不等于3,同时2和null也不能匹配,所以为false