从EXCEL导入数据库数值型都被四舍五入了
实现EXCEL数据导入数据库(MYSQL)的过程中,发现EXCEL数值类型的字符到数据库中最后两位就会被四舍五入,例如200862到数据库里就会变成200860,我数据库...
实现EXCEL数据导入数据库(MYSQL)的过程中,发现EXCEL数值类型的字符到数据库中最后两位就会被四舍五入,例如200862到数据库里就会变成200860,我数据库该字段类型设的为VARCHAR,如果设成别的类型也不对,比如用浮点型,数据库里存的就和EXCEL里文本类型一样了。。。我在存入的函数里没有加入四舍五入转换,所以肯定问题出在格式上,求解
展开
5个回答
展开全部
多看看你写的程序吧!
这种问题我不想回答来着,百度里弄不成精彩回复。
--------------
给你做一个实验。
假如excel 使用的是标准xml 驻存。
基本上类似于如下结构
<H30_Value>4.011<H30_Value/>
<H30_Handle>Round(2)<H30_Handle/>
<H30_ViewValue>4.00<H30_ViewValu/>
也就是说,你获得的值不是视觉值就是,实际存储值。
你的程序并没有统一处理,一些API,getCellValue,和 Value 差距可是相当的大。
mysql 写的导入插件用的是实际存储值。
我建立一个表,三个列 A int B float C varchar
然后我用甲骨文开发的插件提交一下数据:
一共三行 三种格式。 自己多看看 fx 的那个显示 是什么值
也就是说 造成这种视觉和实际的元凶是handle,你用最简单的模板试一下,我个人认为你的那个程序有问题的概率比excel格式出问题的概率大一些。
mysql 文本 如果是数字 也可运算,这是一个优点。也是一个缺点。
追问
我数值型没有保留小数点,故输入值和显示值是一样的,我程序里没用Round函数,出现了最后两位四舍五入的这情况,应该没这么神奇吧
追答
所以让你优先排查你的程序。 你也可以用mysql for excel这个插件 ,提交一下你的excel。
试一下就知道问题出在哪里了。
以前开发程序的时候倒是有这种情况,200862到数据库里就会变成200860 基本不可能,可能是你举的例子根本就是你的假设。
但是在长数据的时候会产生这样的情况。
比如56656565665656566666 在excel 中 常规 数字 都会变成 56656565665656560000
当时解决是采用 先设置文本,或采用 '56656565665656566666 加个上撇 存储。
是csv文件,不要用excel 打开,不然大数据都会被编零。
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
这是单元格格式的问题,你在你输入的数据上按右键,选择单元格格式,选数值,保留几位小数,你自己选择,因为之前你选择的是零位,所以四舍五入了
追问
我保留小数点后几位也是这样,数据库内格式用什么好呢。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数据库中 VARCHAR 类型是字符串类型。
追问
我就是在问为啥数值型存字符串就会出现后两位四舍五入的情况呢?~数据库内应该对应哪种格式才正确显示
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
既然数据库上VARCHAR
excel对应列 应该设为文本型
excel对应列 应该设为文本型
追问
数字作为文本处理会存成6.93155E+12这样的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我在批量处理数据库内容的时候,也遇到这种问题。我一般会直接导出CSV文件,让后用TXT进行内容替换。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询