无论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怎么格式化取指定小数位数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)