我看一个oracle数据库,有一列名为score
的列被声明为INT(12,2)
。
存储在其中的值如下所示:
23487.31
0
322.3
那么这意味着这些是实际的浮点值吗?
我确实浏览了oracle数据类型文档,但是找不到有关INT(a,b)表示法的任何信息。
(来源:https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT012)
编辑:
SELECT * FROM v$version;
给我:
Oracle Database 10g Release 10.2.0.5.0 - Production
PL/SQL Release 10.2.0.5.0 - Production
CORE 10.2.0.5.0 Production
TNS for Linux: Version 10.2.0.5.0 - Production
NLSRTL Version 10.2.0.5.0 - Production
答案 0 :(得分:2)
这是否意味着这些是实际的浮点值?
不。这些数字的定义精度为两位小数。
Oracle支持FLOAT数据类型,但在内部以NUMBER表示。如果您希望使用真正的浮点运算来更快地进行运算,则它具有BINARY_FLOAT和BINARY_DOUBLE。
为什么找不到关于
INT(a,b)
的符号的任何信息?
因为它不是有效的Oracle表示法。允许使用INT作为INTEGER的同义词,但不允许使用scale或precision参数。如果您尝试将它们包括在内,则Oracle会推销ORA-00907。 (因为整数的精度可以为零,所以精度无论如何都是无效的。)