select * from test t where t.name not like '%test%';这个语句为什么连t.name is null 的也查不出来呢?
不是应该可以查询出来name为空的吗?只是模糊带test的才过滤掉?
为什么模糊查询的时候,会把为空的过滤掉
select * from test t where t.name not like '%test%';会把name为空的过滤了
第一句就解释了啊,null值只能用is null或is not null去判断
其他任何运算符如=与或者like,都无法去判断
就如你的表,假设只有test与null两个值,那么你的语句将不返回任何数据
因为not like排除了test,而like是不能判断null的,所以也不能显示
null值比较特殊,不是你认为的非false就是true,
你认为=null不显示的话,那么null一定会显示数据,这就错了
null除非用is去判断,否则=与或者like与not like都不会返回数据