首页 > 数据库 >【MySQL】求和查询,目标值int,但空数据时返回null的问题(Java)

【MySQL】求和查询,目标值int,但空数据时返回null的问题(Java)

时间:2024-05-10 23:52:54浏览次数:48  
标签:count repair Java int 但空 返回 COALESCE NULL SUM

问题分析

 int selectDeviceMonthRepairCount(String deviceType, String month);
    <select id="selectDeviceMonthRepairCount" resultType="int">
        SELECT SUM(repair_count)
        FROM warranty_records
        WHERE device_type = #{deviceType}
          AND nian_yue = #{month}
    </select>

上面代码,在数据为空的时候,查询结果是null,会导致报错:

Mapper method 'com.aibaizhi.system.mapper.DashboardDataMapper.selectDeviceMonthRepairCount attempted to return null from a method with a primitive return type (int).

解决方案

解决办法就是查询的时候,如果为null,则设置一个默认值0

<select id="selectDeviceMonthRepairCount" resultType="int">
    SELECT COALESCE(SUM(repair_count), 0)
    FROM warranty_records
    WHERE device_type = #{deviceType}
    AND year_month = #{month}
</select>

SELECT COALESCE(SUM(repair_count), 0) 是一个SQL语句片段,它使用了COALESCE函数来确保查询结果始终返回一个值,即使SUM(repair_count)可能为NULL。

让我们分解这个语句:

SUM(repair_count):

这部分计算repair_count列的总和。但是,如果没有任何行满足查询条件(例如,给定的device_type和year_month没有匹配的记录),SUM函数可能会返回NULL。

COALESCE(..., 0):

COALESCE函数接受一系列参数,并返回第一个非NULL的值。在这个例子中,它检查SUM(repair_count)的值。
如果SUM(repair_count)是NULL(即没有匹配的记录),则COALESCE返回其第二个参数,即0。
如果SUM(repair_count)不是NULL(即至少有一条匹配的记录),则COALESCE返回SUM(repair_count)的实际值。

因此,整个语句的意思是:“计算repair_count的总和,但如果没有匹配的记录导致总和为NULL,则返回0。”

这在处理可能返回空集(即没有匹配记录)的查询时非常有用,因为它确保了你始终得到一个有效的整数值,而不是一个可能导致后续代码出现问题的NULL值。

标签:count,repair,Java,int,但空,返回,COALESCE,NULL,SUM
From: https://www.cnblogs.com/mllt/p/18185534/mysql_sum_null

相关文章

  • java代码规范
    Java代码规范规范类型规范要求命名规范-类名:大写字母开头,驼峰命名法。<br>-方法名、变量名、包名:小写字母开头,驼峰命名法。<br>-常量:全大写字母,下划线分隔单词。缩进和空格-使用4个空格进行缩进,不使用制表符。<br>-二元运算符前后应该加上空格,以增......
  • java代码评审检查表
    Java代码评审检查表编号检查项是否不适用BUG数代码行备注源文件1是否以UFT-8编码      2是否使用通配符导入      3import语句是否换行      ......
  • [转帖]Java程序在K8S容器部署CPU和Memory资源限制相关设置
    https://developer.aliyun.com/article/700701  简介: 背景在k8sdocker环境中执行Java程序,因为我们设置了cpu,memory的limit,所以Java程序执行时JVM的参数没有跟我们设置的参数关联,导致JVM感知到的cpu和memory是我们k8s的worknode上的cpu和memory大小。背景在......
  • java引入es使用
    引入依赖<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId></dependency>初始化对象RestHighLevelClientclient=newRestHighLevelClient(RestClient.......
  • JAVA 启动常用命令
    nohupjava-jarxxx.jar&--运行jar文件ssh关闭也继续运行nohupjava-jar-Xms512m-Xmx1024mxxx.jar&--指定内存运行jar文件ssh关闭也继续运行nohupjava-jar-Xms512m-Xmx1024m&nohupjava-Dfile.encoding=utf-8-jar-Xms512m-Xmx1024m&以utf-8编码......
  • 深入探索JavaScript中的structuredClone:现代深拷贝的解密指南
    在JavaScript中,实现深拷贝的方式有很多种,每种方式都有其优点和缺点。今天介绍一种原生JavaScript提供的structuredClone实现深拷贝。下面列举一些常见的方式,以及它们的代码示例和优缺点:1.使用JSON.parse(JSON.stringify(obj))代码示例:functiondeepClone(obj){re......
  • Java web基础
    1、理解Jsp的page指令JSP(JavaServerPages)中的<%@page%>指令用于设置整个JSP页面的属性。它通常位于JSP页面的顶部,用于指定页面的一些配置信息。生存周期仅限制在本页面。2、理解Jsp的include指令在JSP中,<%@include%>指令用于在一个JSP页面中包含另一个文件的内容。这个指......
  • Intel 显卡单机多卡 FSDP 模型 checkpointing 时 Assert Out
    Intel显卡单机多卡FSDP模型checkpointing时AssertOut Intel显卡单机多卡FSDP模型checkpointing时AssertOut现象根因顺藤摸瓜抽丝剥茧解法最后的话现象使用HuggingFaceTrainer在单机多卡环境下对LLAMA2-7B进行LoRAfinetuning时,......
  • Oracle Hint "index_combine"对于like的局限性
     OracleHint"index_combine"对于like的局限性 数据库版本:11.2.0.4.0今天遇到1条问题SQL,优化遇到一点问题,SQL文本大概如下:其中,col2和col3存在索引的且选择性都很高,col1的业务特性是只有两个值选择性低没有也不适合建Btree索引。导致每次执行都是全表扫描,统计发现这条SQL......
  • 【java】【集合类】HashMap 与HashTable的区别
    1.继承的父类不同HashMap是继承自AbstractMap类,而HashTable是继承自Dictionary类。不过它们都实现了同时实现了map、Cloneable(可复制)、Serializable(可序列化)这三个接口HashMap继承、实现关系如下: HashTable继承、实现关系如下: Dictionary类是一个已经被废弃的类(见其源码......