sql >> Databasteknik >  >> RDS >> Oracle

Hitta numerisk undertyp (smallint, int, etc) i oracle

Datatypen SMALLINT och INT är bara ANSI/ISO standardtyper som i Oracle, är alias för NUMBER(38) och BIGINT datatypen finns inte.

Om du vill lagra 2-byte, 4-byte och 8-byte värden kan du använda en kombination av lämplig storlek NUMBER kolumner och kontroll av begränsningar för att säkerställa att data ligger inom de nödvändiga gränserna:

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

Sedan:

SELECT * FROM table_name

Utgångar:

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



  1. Hur man returnerar rader som saknas i tabellen - Anställd frånvarorapport

  2. Meddela från utlösaren på pglogical replikerad tabell

  3. Undantag i huvudtråden java.sql.SQLEUndantag:Åtkomst nekad för användare ''@'localhost' (med lösenord:NO)

  4. Kör två SQL-frågor på en php-sida (SET + SELECT)