【发布时间】:2019-08-03 10:32:27
【问题描述】:
我刚刚开始学习 Oracle SQL。我想我正在尝试划分与整数相同的 numeric 数据类型的两列。我想在表或float 数据类型中创建一个新列,将现有的numeric 列除以一个整数并将其值放入float 列。我正在将此代码用于划分和更新部分:
update Student set AVERAGE = TOTAL/3;
这里,TOTAL 是 numeric 列,AVERAGE 是 float。但是当我使用以下方法打印表格时:
select * from Student;
, AVERAGE 以四舍五入的除法值显示。我尝试了在互联网上找到的两种解决方案:
update Student set AVERAGE = (TOTAL*1.00)/3;
还有:
update Student set AVERAGE = cast(TOTAL as float(2))/3;
但两者都不起作用。我究竟做错了什么? 这是我得到的输出:
ROLL_NO SNAME MATHS CHEM PHY TOTAL AVERAGE
---------- --------------- ---------- ---------- ---------- ---------- ----------
101 abcd 56 68 80 204 70
102 efgh 81 78 70 229 80
103 ijkl 69 73 78 220 70
104 mnop 90 89 92 271 90
105 qrst 80 89 79 248 80
【问题讨论】:
-
表格说明?
-
你真的想要浮点数吗?或者只是精确到小数位的数字结果?
-
我从未见过 Oracle 需要
float数据类型的情况。文档声明它是为了兼容性而提供的,并建议您改用binary_float或binary_double。我也从未见过需要这些。为什么你需要float,具体来说? -
@WilliamRobertson 你能在
numeric中获得十进制数字吗?我以为numeric是Integers的替代品 -
@ShantanuShinde 是的,尽管
numeric是number的替代术语,它几乎总是用于任何数值。阅读data types 上的文档部分。