gorm stdErr = sql: Scan error on column index 0, name "total": converting NULL to float64 is unsupported
前言
使用 gorm 查询时,报错:stdErr = sql: Scan error on column index 0, name "total": converting NULL to float64 is unsupported
代码如下
var total float64
res := db.Model(&model.Record{}).Select("sum(amount) as total").Where("id = ? and type = ? ", key.Id, key.Type).Find(&total)
if res.Error != nil {
return 0, errors.Errorf(res.Error, errors.ErrorDBFindFailed)
}
这个错误是因为查询结果中的 total 列的值为 NULL,而尝试将 NULL 转换为 float64 类型时发生了错误。
查询结果中的 total 列的值为 NULL 可能有多种原因:
- 数据库中没有匹配的记录:根据查询条件,可能没有符合条件的记录存在,因此返回的"total"列的值为
NULL。这意味着在数据库中没有与给定的id和type匹配的记录。 amount列的值为NULL:如果amount列的值为NULL,那么使用SUM函数计算总和时,结果将为NULL。因此,total列的值将为NULL。- 数据库中存在
NULL值:如果amount列中存在NULL值,并且在查询中没有处理NULL值的情况,那么计算总和时将返回NULL。
解决方法
import "database/sql"
var total sql.NullFloat64
res := db.Model(&model.Record{}).Select("COALESCE(sum(amount), 0) as total").Where("id = ? and type = ? ", key.Id, key.Type).Find(&total)
if res.Error != nil {
return 0, errors.Errorf(res.Error, errors.ErrorDBFindFailed)
}
if total.Valid {
return total.Float64, nil
} else {
return 0, nil
}
在上述代码中,使用了 SQL 的 COALESCE 函数将 sum(amount) 的结果替换为0(或其他默认值)。
然后,我们检查 total.Valid 字段,如果查询结果不为 NULL ,则将其转换为 float64 类型并返回。
通过这种方式,即使查询结果中的"total"列的值为NULL,也可以正常处理,并且可以返回默认值或根据业务逻辑进行处理。
gorm stdErr = sql: Scan error on column index 0, name "total": converting NULL to float64 is unsupported的更多相关文章
- Scan error on column index 1, name “created_at“: unsupported Scan, storing driver.Value type []uint8
使用gorm,出现以下报错 在连接数据库时加上: parseTime=True db, err = gorm.Open(utils.Db, fmt.Sprintf("%s:%s@(%s:%s ...
- 表结构变更后出现的ERROR OGG-01161 Bad column index (88)
2014-07-31 09:38:31 ERROR OGG-01668 PROCESS ABENDING. 2014-07-31 09:38:31 ERROR OGG-01161 Bad column ...
- java.sql.SQLException:Column Index out of range,0<1
1.错误描述 java.sql.SQLException:Column Index out of range,0<1 2.错误原因 try { Class.forName("com.m ...
- org.springframework.jdbc.UncategorizedSQLException: Error attempting to get column 'alarmGroup' from result set. Cause: java.sql.SQLException: Error
异常展示: org.springframework.jdbc.UncategorizedSQLException: Error attempting to get column 'alarmGroup ...
- Union比or快 Using UNION is faster when it comes to cases like scan two different column。
problem: 595. Big Countries A country is big if it has an area of bigger than 3 million square km or ...
- Column Index out of range, 2 > 1 列索引的范围,2 > 1。
Column Index out of range, 2 > 1 列索引的范围,2 > 1.这个问题是进行数据库查询的时候出现的. 因为查询sql语句时 只查询了 name 然后whil ...
- Android 模糊搜索rawquery bind or column index out of range: handle 0x2fb180 报错
做模糊搜索时,出现了 bind or column index out of range: handle 0x2fb180 报错 public Cursor getTitle(String word ...
- ERROR: Functions in index expression must be marked IMMUTABLE
在创建函数索引时遇到报错,报错信息即为标题,下面是详细信息. 1 表定义 1234567 skytf=> \d test_39; Table "skytf.test_39" ...
- MS SQL错误:SQL Server failed with error code 0xc0000000 to spawn a thread to process a new login or connection. Check the SQL Server error log and the Windows event logs for information about possible related problems
早晨宁波那边的IT人员打电话告知数据库无法访问了.其实我在早晨也发现Ignite监控下的宁波的数据库服务器出现了异常,但是当时正在检查查看其它服务器发过来的各类邮件,还没等到我去确认具体情 ...
- '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp error
'0000-00-00 00:00:00' can not be represented as java.sql.Timestamp error 异常现象 ### Cause: java.sql.SQ ...
随机推荐
- Qt音视频开发38-ffmpeg视频暂停录制的设计
一.前言 基本上各种播放器提供的录制视频接口,都是只有开始录制和结束录制两个,当然一般用的最多的也是这两个接口,但是实际使用过程中,还有一种可能需要中途暂停录制,暂停以后再次继续录制,将中间部分视频不 ...
- Qt编写安防视频监控系统25-离线地图
一.前言 离线地图这个功能是近期才完成的,老早以前就很多人问有没有离线地图的功能,之前也大致了解过如何做离线地图,其实最核心的不是代码,而是如何搞到免费的离线地图文件,离线地图下载器网上大部分都是收费 ...
- Qt编写安防视频监控系统30-GPS运动轨迹
一.前言 此功能是一个客户定制的,主要是需要在地图上动态显示GPS的运动轨迹,有个应用场景就是一个带有监控的车子,实时在运动中,后台可以接收到经纬度信息,需要绘制对应的轨迹,相当于这些摄像机点位是动态 ...
- 使用 SK Plugin 给 LLM 添加能力
前几篇我们介绍了如何使用 SK + ollama 跟 LLM 进行基本的对话.如果只是对话的话其实不用什么 SK 也是可以的.今天让我们给 LLM 整点活,让它真的给我们干点啥. What is Pl ...
- 零基础Windows Server搭建部署Word Press 博客系列教程(3):弱鸡变猛男之部署CDN加速和缓存加速
我们博客里面存在的各种媒体文件.压缩文件.脚本文件,这些文件可能很大而且不需要随时生成.如果我们的服务器带宽很小,访问我们网站的用户等待加载完成就需要很长时间,那么访问速度会很慢.因此我们需要通过第三 ...
- 利用SDCC开源项目搭建C51编译平台
下载sdcc 安装sdcc 安装sublime 新建编译系统输入以下内容 { "shell_cmd": "sdcc \"${file}\" " ...
- 一个小的图文编辑软件 -- 采用winform开发
本人用winform开发了一款图文编辑软件,实现了图片.文字.图形混合排版; 可以对图元调整大小.设置角度.添加剪切区间等操作.本人以前也写过一款类似的软件<WinForm版图像编辑小程序> ...
- 详解 IntelliJ IDEA 配置和启动maven项目步骤
一 .从svn中检出web项目: 1.如果是maven项目:首先配置仓库 2.从svn中检出maven项目: 3.检查项目是否是maven项目,如果不是转化成maven,然后点击,更新jar 二.配置 ...
- 解决安装python各种包速度慢问题
# 改用清华镜像库 pip install ******* -i https://pypi.tuna.tsinghua.edu.cn/simple
- 【译】轻松评估 AI 应用程序的质量
原文 | Wendy Breiding 翻译 | 郑子铭 在构建利用 AI 的应用程序时,能够有效地评估 SLM(小型语言模型)或 LLM(大型语言模型)的响应从未如此重要. 评估是指评估 AI 模型 ...