sql >> Base de Datos >  >> RDS >> Oracle

decimal(s,p) o numero(s,p)?

En Oracle, son lo mismo:

Las sentencias de SQL que crean tablas y clústeres también pueden utilizar tipos de datos ANSI y tipos de datos de los productos de IBM SQL/DS y DB2. Oracle reconoce el nombre del tipo de datos ANSI o IBM que difiere del nombre del tipo de datos de OracleDatabase. Convierte el tipo de datos al tipo de datos de Oracle equivalente, registra el tipo de datos de Oracle como el nombre del tipo de datos de la columna y almacena los datos de la columna en el tipo de datos de Oracle según las conversiones que se muestran en las tablas siguientes.

La tabla debajo de esta cita muestra que DECIMAL(p,s) se trata internamente como un 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  

Sin embargo, la escala por defecto es 0 para DECIMAL , lo que significa que DECIMAL(*) se trata como NUMBER(*, 0) , es decir, 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