【发布时间】:2019-03-19 18:16:13
【问题描述】:
我查看了一个 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
【问题讨论】:
-
Oracle 不允许您创建列定义为
int(12,2)的表。intdoesn't take arguments。你确定你看到的是INT而不是NUMBER;如果是这样,在哪里显示? -
重申@AlexPoole 所说的 - 在定义 INT 类型的列时,您不能提供比例或精度。这根本是不允许的,并且会引发
ORA-00907: missing right parenthesis错误。 dbfiddle here 如果您有一个数据库,其中列定义为INT(12,2)它不是 Oracle。您是指主线 Oracle 产品,还是他们的其他产品之一,例如 MySQL 或 Rdb? (MySQL 甚至不允许这样做。无法检查 Rdb,因为我不再有权访问 Rdb 服务器,但我怀疑它会起作用)。 -
@AlexPoole 我从
DESCRIBE MYTABLE得到了INT(12,2)。是的,它是 Oracle 10g。我更新了我的问题以获取更多详细信息。 -
在 Oracle DESCRIBE MYTABLE 中应该显示 INTEGER 而不是 INT。除非 10.2.0.5 出现异常。
-
@Peter - 在哪个客户端,哪个版本的数据库和客户端?您对
all_tab_columns中的数据类型、精度和规模有何看法?
标签: oracle numbers integer sqldatatypes