服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - 避坑:Sql中 in 和not in中有null值的情况说明

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

2022-07-07 17:24ispringmw Mysql

这篇文章主要介绍了避坑:Sql中 in 和not in中有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

延伸 · 阅读

精彩推荐
  • Mysql详解mysql8.0创建用户授予权限报错解决方法

    详解mysql8.0创建用户授予权限报错解决方法

    这篇文章主要介绍了详解mysql8.0创建用户授予权限报错解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    眼沉沉5182019-06-22
  • MysqlMySQL存储过程中实现执行动态SQL语句的方法

    MySQL存储过程中实现执行动态SQL语句的方法

    这篇文章主要介绍了MySQL存储过程中实现执行动态SQL语句的方法,实例分析了MySQL中构造及执行动态SQL语句的相关技巧,具有一定参考借鉴价值,需要的朋友可以...

    鉴客3952020-05-15
  • Mysql如何清除mysql注册表

    如何清除mysql注册表

    在本篇文章里小编给大家整理的是关于如何清除mysql注册表的相关知识点内容,有需要的朋友们可以参考下。...

    FXL3872021-01-29
  • Mysqlmysql处理海量数据时的一些优化查询速度方法

    mysql处理海量数据时的一些优化查询速度方法

    最近一段时间由于工作需要,开始关注针对Mysql数据库的select查询语句的相关优化方法,需要的朋友可以参考下 ...

    服务器之家2032020-07-25
  • Mysql解决MySQL中IN子查询会导致无法使用索引问题

    解决MySQL中IN子查询会导致无法使用索引问题

    这篇文章主要介绍了MySQL中IN子查询会导致无法使用索引问题,文章给大家介绍了两种子查询的写法,需要的朋友可以参考下 ...

    MSSQL1235812020-08-01
  • Mysqlmysql myisam 优化设置

    mysql myisam 优化设置

    mysql myisam 优化设置,需要的朋友可以参考下。 ...

    mysql教程网2092019-11-06
  • Mysql15个必知的 MySQL 索引失效场景

    15个必知的 MySQL 索引失效场景

    本篇文章为大家总结了15个常见的索引失效的场景,由于不同的Mysql版本,索引失效策略也有所不同。大多数索引失效情况都是明确的,有少部分索引失效会...

    程序新视界9772022-02-28
  • MysqlMySQL入门教程(七)之视图

    MySQL入门教程(七)之视图

    视图是从一个或多个表中导出来的虚拟表。视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据。本文给大家介绍MySQL入门教程(七)之视图,...

    MYSQL教程网3962020-06-03