避坑:Sql中 in 和not in中有null值的情况说明

吾爱主题 阅读:150 2024-04-02 18:54:50 评论:0
目录
  • Sql中in和not in中有null值的情况
    • 1.not in 中包含null值的情况
    • 2.in 中包含null值的情况
  • mysql有默认值但是仍然插入null问题

Sql中in和not in中有null值的情况

1)in的逻辑规则是or not in 的逻辑规则是 and

2)判断null 的sql语句为 is not null 或者 is null

3)当遇到 null = null 的判断是时由于不符合null的判断规则,所以结果一定为flase

1.not in 中包含null值的情况

?
1 2 3 4 5 select   *    from A    where   A. name not   in     ( select B. name           from B )

在上面的not in的查询中如果B表的name字段存在空值时,不论何种情况上述语句的查询结果一定为空

2.in 中包含null值的情况

?
1 2 3 4 5 select   *    from A    where   A. name in     ( select B. name           from B )

在上面的 in 的查询中如果B表的name字段存在空值时,如果A表中存在name字段也存在空值,那么上述语句的查询结果中不会显示A表中的空值

mysql有默认值但是仍然插入null问题

今天发现项目中对应的某条记录某一列的值为null,但是针对这条记录这一列的值不应该为null。

检查代码发现是在插入的时候没有对这一列对应的成员变量赋值,即便数据库这一列有默认值,在插入到数据库时依然插入了null。

mysql 的默认值只有在insert语句中没有这个字段时才会生效,如果insert中有插入该字段而该字段取值又为null,null值将被插入到表中,默认值此时失效。

在mybatis开发中通常会直接插入一个表对象,表中所有字段都会插入,因此如果要设置默认值,应该在业务层写逻辑,而不能依赖mysql的default来设置默认值。

另外尽量保证对于数据库的新增应该使用动态的sql来进行操作,这样也能避免上面问题。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/ispringmw/article/details/109697504

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容