sql >> Database teknologi >  >> RDS >> Oracle

Find numerisk undertype (smallint, int osv.) i oracle

Datatypen SMALLINT og INT er blot ANSI/ISO standardtyper, som i Oracle, er aliaser for NUMBER(38) og BIGINT datatype eksisterer ikke.

Hvis du vil gemme 2-byte, 4-byte og 8-byte værdier, kan du bruge en kombination af passende størrelse NUMBER kolonner og kontrol af begrænsninger for at sikre, at dataene er inden for de påkrævede grænser:

CREATE TABLE table_name (
  small  NUMBER( 5,0) CHECK ( small  BETWEEN -POWER(2,15) AND +POWER(2,15)-1 ),
  medium NUMBER(10,0) CHECK ( medium BETWEEN -POWER(2,31) AND +POWER(2,31)-1 ),
  big    NUMBER(19,0) CHECK ( big    BETWEEN -POWER(2,63) AND +POWER(2,63)-1 )
);

INSERT INTO table_name VALUES ( -POWER(2,15), -POWER(2,31), -POWER(2,63) );
INSERT INTO table_name VALUES ( POWER(2,15)-1, POWER(2,31)-1, POWER(2,63)-1 );
 

Så:

SELECT * FROM table_name
 

Udgange:

SMALL MEDIUM BIG ------ ----------- -------------------- -32768 -2147483648 -9223372036854775808 32767 2147483647 9223372036854775807


  1. Hvordan LEFT JOIN, for at oprette et datointerval?

  2. MySQL-indekser - hvad er den bedste praksis?

  3. SQLcl til at overføre data fra Oracle til PostgreSQL eller YugabyteDB 🅾🐘🚀

  4. IN vs ENHVER operatør i PostgreSQL