美文网首页
not in关键字使用的细节

not in关键字使用的细节

作者: moutory | 来源:发表于2023-05-31 19:45 被阅读0次

    前言

    讲讲not in关键字使用上的小坑

    我们知道,可以通过使用select * from table where filed in (xxx,xxx)的方式来筛选出某个字段的值存在于给定集合范围内的记录,通过not in 关键字来判断某个字段的不存在给定集合范围内的数据。但是对于not in关键字,上述的规则在碰上存在null值的集合范围内就不再生效了

    mysql中,0NULL都表示false,所以如果说,对于select * from table where field = NULL这种sql,由于所有值和NULL比较都会返回NULL,所以是查不到任何数据的。对于NULL值的比较,需要用IS NULL或者IS NOT NULL来进行判断。

    关于NULL关键字,我们可以看一下官方的解释:https://dev.mysql.com/doc/refman/8.0/en/working-with-null.html

    mysql官网解释

    官网说了,NULL可以看做是未确认的值(注意,不是不存在的值),所有直接用=><>等规则和NULL比较的值,结果并不是我们猜想的true或者false,而是返回NULL

    OK,说回NULL值对not in的影响
    对于not in左右两侧存在NULL,且左右两侧确实没有相同的值这种场景,比较的结果都会是NULL

    mysql执行结果

    对于not in左右两侧存在NULL,且左右两侧存在相同的值这种场景,比较的结果会是0

    mysql执行结果

    我们在上文有提过,无论是0还是NULL,对于mysql来说都会识别为false,所以select * from table where field not in (NULL,a,b)这种类型的sql,即使field的值为c,也是没有数据返回的。但是需要注意的是,对于in关键字来说,是可以不受NULL影响,正常查到数据的。

    参考文章

    MySQL IN和NOT IN用法详解:http://c.biancheng.net/view/7193.html
    Working with NULL Values:https://dev.mysql.com/doc/refman/8.0/en/working-with-null.html

    相关文章

      网友评论

          本文标题:not in关键字使用的细节

          本文链接:https://www.haomeiwen.com/subject/vpbyedtx.html