先来看一个问题:a not in (b,c,null),返回什么? 是不是有时辛辛苦苦写了个查询,但显示的不是想要的答案?让我们来看看其中的一个陷阱。 我们筛选为某列值为NULL的行,一般会采用如下的方式:select * from tb where col=null 但这无法得到我们想要的结果的,正确的方式是col is null 为什么呢?这涉及到三值逻辑。 三值逻辑 在SQL中逻辑表达式的可能值包括TRUE、FALSE和UNKNOWN。它们被称之为三值逻辑。 三值逻辑是SQL所特有的。大多数编程语言的逻辑表达式只有TRUE或FALSE两种值。 S