sql >> Databasteknik >  >> RDS >> Oracle

decimal(s,p) eller tal(s,p)?

I Oracle är de samma:

SQL-satser som skapar tabeller och kluster kan också använda ANSI-datatyper och datatyper från IBM-produkterna SQL/DS och DB2. Oracle känner igen ANSI- eller IBM-datatypnamnet som skiljer sig från OracleDatabase-datatypnamnet. Den konverterar datatypen till motsvarande Oracle-datatyp, registrerar Oracle-datatypen som namnet på kolumndatatypen och lagrar kolumndata i Oracle-datatypen baserat på omvandlingarna som visas i tabellerna som följer.

Tabellen nedanför detta citat visar att DECIMAL(p,s) behandlas internt som ett 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  

Skalan är dock standard till 0 för DECIMAL , vilket betyder att DECIMAL(*) behandlas som NUMBER(*, 0) , dvs. 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   


  1. Fullständig återställning av ett MySQL- eller MariaDB Galera-kluster från säkerhetskopiering

  2. ScaleGrid DBaaS nominerad till Cloud Excellence Awards 2018

  3. Använda Oracle Service Names med SQLAlchemy

  4. Varför kraschade min MySQL-databas? Få insikter med den nya MySQL Freeze Frame