Oracle
 sql >> Base de données >  >> RDS >> Oracle

décimal(s,p) ou nombre(s,p) ?

Dans Oracle, ce sont les mêmes :

Les instructions SQL qui créent des tables et des clusters peuvent également utiliser des types de données ANSI et des types de données des produits IBM SQL/DS et DB2. Oracle reconnaît le nom du type de données ANSI ou IBM qui diffère du nom du type de données OracleDatabase. Il convertit le type de données en type de données Oracle équivalent, enregistre le type de données Oracle comme nom du type de données de colonne et stocke les données de colonne dans le type de données Oracle en fonction des conversions indiquées dans les tableaux qui suivent.

Le tableau sous cette citation montre que DECIMAL(p,s) est traité en interne comme 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  

Cependant, l'échelle par défaut est 0 pour DECIMAL , ce qui signifie que DECIMAL(*) est traité comme NUMBER(*, 0) , c'est-à-dire 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