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

Trouver un sous-type numérique (smallint, int, etc.) dans oracle

Le type de données SMALLINT et INT ne sont que des types standard ANSI/ISO qui, dans Oracle, sont des alias pour NUMBER(38) et le BIGINT le type de données n'existe pas.

Si vous souhaitez stocker des valeurs de 2 octets, 4 octets et 8 octets, vous pouvez utiliser une combinaison de NUMBER de taille appropriée colonnes et vérification des contraintes pour s'assurer que les données sont dans les limites requises :

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 );

Ensuite :

SELECT * FROM table_name

Sorties :

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