用逗号存储的Oracle整数

时间:2018-10-15 10:30:24

标签: oracle numbers integer sqldatatypes

我看一个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

1 个答案:

答案 0 :(得分:2)

  

这是否意味着这些是实际的浮点值?

不。这些数字的定义精度为两位小数。

Oracle支持FLOAT数据类型,但在内部以NUMBER表示。如果您希望使用真正的浮点运算来更快地进行运算,则它具有BINARY_FLOAT和BINARY_DOUBLE。


  

为什么找不到关于INT(a,b)的符号的任何信息?

因为它不是有效的Oracle表示法。允许使用INT作为INTEGER的同义词,但不允许使用scale或precision参数。如果您尝试将它们包括在内,则Oracle会推销ORA-00907。 (因为整数的精度可以为零,所以精度无论如何都是无效的。)