2009-12-15 12 views

risposta

4

Oracle implementa il "integer" ANSI tipo di dati come sinonimo di NUMBER (38)

Per maggiori dettagli si veda "Learn Oracle: Datatypes for SQL and PL/SQL, Numbers"

Tuttavia, la seguente tabella dovrebbe essere usato come una mappatura tra tipo di dati in Oracle e MySQL:

"Oracle® Database SQL Developer Supplementary Information for MySQL Migrations"

Oracle e MySQL Rispetto> Tipi di dati> Confronto tra tipi di dati

La differenza principale, come spiegato here e here è che Oracle NUMERO datatype è formato a lunghezza variabile, mentre MySQL DECIMAL (n) tipo di dati utilizzato per essere represented as strings that require one byte per digit or sign character (prima versione 5.0.3)

(Oracle NUMBER Tipo dati) Formato numerico interno

Oracle Database memorizza i dati numerici nel formato di lunghezza variabile. Ogni valore è memorizzato in notazione scientifica, con 1 byte utilizzato per memorizzare l'esponente e su a 20 byte per memorizzare la mantissa. Il valore risultante è limitato a 38 cifre di precisione. Oracle Database non memorizza gli zero iniziali e finali . Ad esempio, il numero 412 è memorizzato in un formato simile a 4,12 x 102, con 1 byte utilizzato per memorizzare l'esponente (2) e 2 byte utilizzati per memorizzare le tre cifre significative della mantissa (4,1 , 2). I numeri negativi includono il segno nella loro lunghezza.

Tenendo conto di ciò, la dimensione di colonna in byte per un particolare numerico NUMERO valore di dati (p), dove p è la precisione di un dato valore, può essere calcolato con la formula seguente:

ROUND((length(p)+s)/2))+1

dove s è uguale a zero se il numero è positivo, ed s è uguale a 1 se il numero è negativo.

Zero e positivo e negativo infinito (generato solo su importazione da Oracle Database, Versione 5) sono memorizzato utilizzando rappresentazioni uniche. infinito zero e negativo ciascuno richiedono 1 byte; infinito positivo richiede 2 byte.

e

(MySQL) DECIMAL dati Tipo Modifiche requisiti

l'archiviazione per la intero e parte frazionaria di ciascun valore vengono determinati separatamente. Ogni multiplo di nove cifre richiede quattro byte e le restanti cifre lasciate richiedono una frazione di quattro byte . [...]

Ad esempio, un DECIMAL (18,9) colonna ha nove cifre su entrambi i lati del punto decimale , quindi la parte intera e la parte frazionaria ogni richiede quattro byte. Una colonna DECIMAL (20,6) ha quattordici cifre intere e sei cifre frazionarie . Le cifre intere richiedono quattro byte per nove delle cifre e tre byte per le restanti cinque cifre . Le sei cifre frazionarie richiedono tre byte.

Problemi correlati