You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SQLite3与DBeaver时SQL SUM函数返回错误值的问题

问题分析与解决方案

核心原因

你看到的377,839,000和793,256,000是DBeaver的千位分隔符格式化显示,而非数据库实际存储的数值。你的Value字段虽然定义为INTEGER,但实际存储的是377和793——这是因为插入数据时输入了带逗号的字符串,SQLite会自动截断非数字部分,仅保留第一个逗号前的数字转换为整数存储,最终SUM(377+793)=1170,和你得到的结果完全匹配。

验证方法

执行以下SQL查询原始存储值(绕过DBeaver的格式化显示):

SELECT Year, CAST(Value AS TEXT) FROM your_table WHERE Year = 2022;

如果返回的是377和793,就确认了数据存储错误。

解决步骤

  1. 修正现有数据:更新错误的存储值为完整整数(注意不要带千位分隔符):
    UPDATE your_table 
    SET Value = 377839000 
    WHERE Year = 2022 AND Value = 377;
    
    UPDATE your_table 
    SET Value = 793256000 
    WHERE Year = 2022 AND Value = 793;
    
  2. 规范数据插入:后续插入数据时,直接输入纯整数(如377839000),不要添加千位分隔符或其他非数字字符。
  3. 调整DBeaver显示设置:可以在DBeaver的「数据显示」设置中关闭自动千位分隔符,避免混淆显示值和实际存储值。

排除其他可能性

SQLite的INTEGER类型支持最大9e18的整数,不会因数值过大溢出;SUM/AVG等聚合函数对整数的计算是精确的,因此不存在数据库本身的设置问题或逻辑错误,完全是数据插入阶段的格式错误导致的。


内容的提问来源于stack exchange,提问作者Ryan Lafayette

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:57:06