重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
问题结论没这么简单,把75改12同样执行结果会是12。
为南昌县等地区用户提供了全套网页设计制作服务,及南昌县网站建设行业解决方案。主营业务为成都网站制作、成都网站设计、南昌县网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
本质原因在于无限小数,当两个日期在做减法时,已经触发了无限循环小数。
倘若此时不使用 to_number,那我们可以将两个日期的差理解为是一个分数形式。
而使用了to_number就不同了,number类型本身是有容量的,无限循环小数转为number类型,会被强制截断小数位,摇身一变成了有限小数。
MOD是用来取余的,没有to_number运算中就没有舍小数位的概念,20100跟75取余为0。
使用了to_number后,就不再是20100跟75取余了,而变成了一个无限接近且小于20100的数据再跟75取余,这样的计算结果就不可控了。
不可控的原因在于计算机本质采用的是二进制数据处理方式,在计算浮点数的时候有先天缺陷。
select t1.store_no,t1.dept_no,t1.dept_sales, round(t1.dept_sales/t2.store_sales,3) from
(select a.store_no, b.dept_no,sum(a.sales) dept_sales from sales a , dept b group by a.store_no, b.dept_no) t1,
(select c.store_no, sum(c.sales) store_sales from sales c group by c.store_no, sum(c.sales) having sum(c.sales)0 ) t2
where t1.store_no=t2.store_no
order by t1.store_no, round(t1.dept_sales/t2.store_sales,3)
可以试试看
说明函数编译有问题,重新编译一下看有什么问题,有没有语法错误?
在oracle里取模要用mod函数,取商的整数部分要用floor函数
faculty_ge := mod(faculty_number,10);
faculty_shi := floor(faculty_numbe/10);
下面一句stu_id_var里将number连接起来,会有个强制类型转换,最好能明确的用to_char函数转换
步骤如下。
供应商连同发票、装箱单、货物送至TEC货舱。
仓务员在Oracle里核对供应商提供的发票、装箱单等资料。
供应商装箱单、发票等资料与Oracle中符合后,再核对外箱资料与文件资料是否符合、外箱及封条是否完好,这样收货程序就完成了。