数据库中存储小数的问题。

数据库中存储小数的问题。,第1张

无论MYSQL还是SQL SERVER,用float类型存放055是不会出问题的,显示为1可能是相关的客户端软件显示时候的宽度不够,自动进行了四舍五入而已,你可以使用MYSQL的命令用SQL显示一下,结果有误差,但是值是对的,比如可能显示055000000001或者054999999999

查询时改为字符型,用通配符查询。

select from table where to_char(czkasmant) like '%1';(如果不是oracle的话,可能to_char那块可能不太一样,但是我记得其他数据库应该也有类似这样的函数)

如果一定要用数字的方法查询,那么要考虑个问题。

是否会会出现10015这样的数,这样的数要不要显示。

像上面那种肯定不会出现这个问题,那种的话,后面必须是1才行。

如果不显示:select from table where czkasmant-trunc(czkasmant)=01

如果显示:select from table where czkasmant-trunc(czkasmant)>=01 and czkasmant-trunc(czkasmant)<02

trunc在这里表示截取整数,也可以用floor,不过trunc好像是通用的吧,所以我用了这个

控制小数显示位数的办法如下:

decimal(18,0)18是定点精度,0是小数位数。decimal(a,b)a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 a之间的值。默认小数位数是 0。

实例:

decimal[ (p[ ,s] )] 和 numeric[ (p[ ,s] )]

固定精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。decimal 的 ISO 同义词为 dec 和 dec(p, s),numeric 在功能上等价于 decimal。

p(精度)

最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数。

该精度必须是从 1 到最大精度 38 之间的值。默认精度为 18。

s (小数位数)

小数点右边可以存储的十进制数字的最大位数,小数位数必须是从 0 到 p 之间的值。

仅在指定精度后才可以指定小数位数,默认的小数位数为 0;

因此,0 <= s <= p。最大存储大小基于精度而变化。

以上就是关于数据库中存储小数的问题。全部的内容,包括:数据库中存储小数的问题。、sql语句怎么取数值,小数点为.1的值、sql怎么格式化取指定小数位数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10145694.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存