Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Dezimalzahl(s,p) oder Zahl(s,p)?

In Oracle sind sie gleich:

SQL-Anweisungen, die Tabellen und Cluster erstellen, können auch ANSI-Datentypen und Datentypen aus den IBM-Produkten SQL/DS und DB2 verwenden. Oracle erkennt den ANSI- oder IBM-Datentypnamen, der sich vom OracleDatabase-Datentypnamen unterscheidet. Es konvertiert den Datentyp in den entsprechenden Oracle-Datentyp, zeichnet den Oracle-Datentyp als Namen des Spaltendatentyps auf und speichert die Spaltendaten im Oracle-Datentyp basierend auf den in den folgenden Tabellen gezeigten Konvertierungen.

Die Tabelle unter diesem Zitat zeigt, dass DECIMAL(p,s) wird intern als NUMBER(p,s) behandelt :

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  

Die Skalierung ist jedoch standardmäßig 0 für DECIMAL , was bedeutet, dass DECIMAL(*) wird als NUMBER(*, 0) behandelt , also 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