我很困惑为什么这里的结果是 TRUE
select 'Clark' in ('Dave', null, 'Clark');
但这里不是假的
select 'Ava' not in ('Dave', null, 'Clark');
有人可以解释一下吗?
我们可以将第二个查询重写为:
select 'Ava' not in ('Dave', null, 'Clark');
select not ('Ava' = 'Dave' OR 'Ava' = null OR 'Ava' = 'Clark')
'Ava' = null
是 unknown,其计算结果为 false,因此整个 IN
表达式为 false,而使用 not
则变为 true。