Gya*_*yan 17 oracle db2 ansi type-conversion
最近,在处理db2 - > oracle迁移项目时,我们遇到了这种情况.开发人员无意中使用decimal(s,p)列创建新的表结构.我不记得Oracle支持这个,但后来一些挖掘表明它是一个ANSI数据类型,因此由oracle支持.
但问题仍然存在 -
Vin*_*rat 18
在Oracle中,它们是相同的:
创建表和集群的SQL语句也可以使用IBM产品SQL/DS和DB2中的ANSI数据类型和数据类型.Oracle认识到与Oracle数据库数据类型名称不同的ANSI或IBM数据类型名称.它将数据类型转换为等效的Oracle数据类型,将Oracle数据类型记录为列数据类型的名称,并根据下表中显示的转换将列数据存储在Oracle数据类型中.
此报价下方的表格显示DECIMAL(p,s)内部处理为NUMBER(p,s):
SQL> create table t (a decimal(*,5), b number (*, 5));
Table created
SQL> desc t;
Name Type Nullable Default Comments
---- ----------- -------- ------- --------
A NUMBER(*,5) Y
B NUMBER(*,5) Y
Run Code Online (Sandbox Code Playgroud)
但是,比例默认为0表示DECIMAL,这意味着它DECIMAL(*)被视为NUMBER(*, 0),即INTEGER:
SQL> create table t (a decimal, b number, c decimal (5), d decimal (5));
Table created
SQL> desc t;
Name Type Nullable Default Comments
---- --------- -------- ------- --------
A INTEGER Y
B NUMBER Y
C NUMBER(5) Y
D NUMBER(5) Y
Run Code Online (Sandbox Code Playgroud)