MySQL 中有关 NULL

@Entity
@Data
public class User {
    @Id
    @GeneratedValue(strategy = IDENTITY)
    private Long id;
    private Long score;
}
    @Autowired
    private UserRepository userRepository;
    @PostConstruct
    public void init() {
        userRepository.save(new User());
    }
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    @Query(nativeQuery=true,value = "SELECT SUM(score) FROM `user`")
    Long wrong1();
    @Query(nativeQuery = true, value = "SELECT COUNT(score) FROM `user`")
    Long wrong2();
    @Query(nativeQuery = true, value = "SELECT * FROM `user` WHERE score=null")
    List<User> wrong3();
}

显然,这三条 SQL 语句的执行结果和我们的期望不同:虽然记录的 score 都是 NULL,但 sum 的结果应该是 0 才对;虽然这条记录的 score 是 NULL,但记录 总数应该是 1 才对;使用 =NULL 并没有查询到 id=1 的记录,查询条件失效。

原因是:MySQL 中 sum 函数没统计到任何记录时,会返回 null 而不是 0,可以使用 IFNULL 函数把 null 转换为 0;MySQL 中 count 字段不统计 null 值, COUNT(*) 才是统计所有记录数量的正确方式。MySQL 中使用诸如 =、、> 这样的算数比较操作符比较 NULL 的结果总是 NULL,这种比较就显得没有任何意 义,需要使用 IS NULL、IS NOT NULL 或 ISNULL() 函数来比较。

@Query(nativeQuery = true, value = "SELECT IFNULL(SUM(score),0) FROM `user`")
Long right1();
@Query(nativeQuery = true, value = "SELECT COUNT(*) FROM `user`")
Long right2();
@Query(nativeQuery = true, value = "SELECT * FROM `user` WHERE score IS NULL")
List<User> right3();

 

相关推荐

  1. MySQL 有关 NULL

    2024-02-04 21:44:02       29 阅读
  2. MySQLNULL值问题

    2024-02-04 21:44:02       36 阅读
  3. 学习MySQL的“IS NULL”优化

    2024-02-04 21:44:02       32 阅读
  4. MySQL日期有关函数

    2024-02-04 21:44:02       23 阅读
  5. MySQLNULL值与空值的坑

    2024-02-04 21:44:02       36 阅读
  6. Mysqlnull值处理

    2024-02-04 21:44:02       9 阅读
  7. MySQLNULL和空的区别是什么?底层原理是什么?

    2024-02-04 21:44:02       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-04 21:44:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-04 21:44:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-04 21:44:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-04 21:44:02       20 阅读

热门阅读

  1. RKNPU2 & Yolo-v5 集成文档

    2024-02-04 21:44:02       35 阅读
  2. 类与对象(下篇)

    2024-02-04 21:44:02       30 阅读
  3. 记录首次使用yolov8-obb

    2024-02-04 21:44:02       33 阅读
  4. 【C++】类和对象3:默认成员函数之析构函数

    2024-02-04 21:44:02       19 阅读
  5. 以太网-环回地址

    2024-02-04 21:44:02       33 阅读
  6. itexpdf使用网页链接

    2024-02-04 21:44:02       33 阅读
  7. 20240204进程间通信

    2024-02-04 21:44:02       33 阅读
  8. 算法之美_2024

    2024-02-04 21:44:02       34 阅读
  9. vue.config.js和webpack.config.js区别

    2024-02-04 21:44:02       30 阅读