Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Tipi numerici
Argomenti
I tipi di dati numerici comprendono numeri interi, decimali e in virgola mobile.
Tipi Integer
Utilizzate i tipi di BIGINT dati SMALLINTINTEGER, e per memorizzare numeri interi di vari intervalli. Non è possibile salvare valori non compresi nell'intervallo consentito per ciascun tipo.
Nome | Storage | Intervallo |
---|---|---|
SMALLINToppure INT2 | 2 byte | Da -32768 a +32767 |
INTEGERINT, o INT4 | 4 byte | Da -2147483648 a +2147483647 |
BIGINTo INT8 | 8 byte | Da -9223372036854775808 a 9223372036854775807 |
DECIMALo NUMERIC digita
Utilizzate il tipo di NUMERIC dati DECIMAL o per memorizzare i valori con una precisione definita dall'utente. Le NUMERIC parole chiave DECIMAL and sono intercambiabili. In questo documento, decimale è il termine preferito per questo tipo di dati. Il termine numerici è usato solitamente per riferirsi a tipi di dati interi, decimali e in virgola mobile.
Storage | Intervallo |
---|---|
Variabile, fino a 128 bit per i tipi non compressi. DECIMAL | Interi firmati da 128 bit con fino a 38 cifre di precisione. |
Definisci una DECIMAL colonna in una tabella specificando una precisione e una scala:
decimal(precision, scale)
- precisione
-
Il numero totale di cifre significative nell'intero valore: il numero di cifre su entrambi i lati del punto decimale. Ad esempio, il numero
48.2891
ha una precisione di 6 e una scala di 4. La precisione predefinita, se non specificata, è 18. La precisione massima è 38.Se il numero di cifre alla sinistra del punto decimale in un valore input supera la precisione della colonna meno la sua scala, non è possibile copiare il valore nella colonna (o inserito o aggiornato). Questa regola si applica a qualsiasi valore che non rientra nell'intervallo della definizione della colonna. Ad esempio, gli intervalli di valori ammessi per una colonna
numeric(5,2)
è da-999.99
a999.99
. - scale
-
Il numero di cifre decimale nella parte frazionaria del valore, alla destra del punto decimale. Gli interi hanno una scala di zero. Nella specifica di una colonna, è necessario che il valore della scala sia inferiore o uguale al valore della precisione. La scala predefinita, se non specificata, è 0. La scala massima è 37.
Se la scala di un valore input caricato in una tabella è maggiore della scala della colonna, il valore viene arrotondato alla scala specificata. Ad esempio, la PRICEPAID colonna nella SALES tabella è una colonna DECIMAL (8,2). Se nella PRICEPAID colonna viene inserito un valore DECIMAL (8,4), il valore viene arrotondato a una scala di 2.
insert into sales values (0, 8, 1, 1, 2000, 14, 5, 4323.8951, 11.00, null); select pricepaid, salesid from sales where salesid=0; pricepaid | salesid -----------+--------- 4323.90 | 0 (1 row)
Tuttavia, i risultati di espliciti cast di valori selezionati dalle tabelle non sono arrotondati.
Nota
Il valore positivo massimo che è possibile inserire in una colonna DECIMAL (19,0) è 9223372036854775807
(2 63 -1). Il valore negativo massimo è -9223372036854775808
. Ad esempio, il tentativo di inserire il valore 9999999999999999999
(19 nove) causerà un errore dell'overflow. Indipendentemente dalla posizione del punto decimale, la stringa più grande che Amazon Redshift può rappresentare come DECIMAL numero è. 9223372036854775807
Ad esempio, il valore più grande che puoi caricare in una colonna DECIMAL (19,18) è. 9.223372036854775807
Queste regole sono dovute al fatto che DECIMAL i valori con una precisione significativa di 19 o meno vengono memorizzati internamente come numeri interi da 8 byte, mentre i DECIMAL valori con una precisione compresa tra 20 e 38 cifre significative vengono archiviati come numeri interi da 16 byte.
DECIMALNote NUMERIC sull'utilizzo di 128 bit o colonne
Non assegnate arbitrariamente la massima precisione alle DECIMAL colonne a meno che non siate certi che l'applicazione richieda tale precisione. I valori a 128 bit occupano il doppio dello spazio su disco rispetto ai valori a 64 bit e possono rallentare il tempo di esecuzione delle query.
Tipi in virgola mobile
Utilizzate i tipi di DOUBLE PRECISION dati REAL e per memorizzare valori numerici con precisione variabile. Questi tipi sono inesatti, il che significa che alcuni valori vengono memorizzati come approssimazioni, così che la memorizzazione e la restituzione di un valore specifico possono risultare in lievi discrepanze. Se hai bisogno di archiviazione e calcoli esatti (ad esempio per importi monetari), utilizza il tipo di DECIMAL dati.
REALrappresenta il formato a virgola mobile a precisione singola, secondo IEEE lo Standard 754 per l'aritmetica binaria a virgola mobile. Ha una precisione di circa 6 cifre e un intervallo compreso tra 1E-37 e 1E+37. È inoltre possibile specificare questo tipo di dati come. FLOAT4
DOUBLEPRECISIONrappresenta il formato a virgola mobile a doppia precisione, secondo IEEE lo Standard 754 per l'aritmetica binaria a virgola mobile. Ha una precisione di circa 15 cifre e un intervallo compreso tra 1E-307 e 1E+308. È inoltre possibile specificare questo tipo di dati come o. FLOAT FLOAT8
Oltre ai valori numerici ordinari, i tipi a virgola mobile hanno diversi valori speciali. Usa virgolette singole attorno a questi valori quando li usi inSQL:
NaN
– not-a-numberInfinity
: infinito-Infinity
: infinito negativo
Ad esempio, per inserire not-a-number nella colonna day_charge
della tabella customer_activity
esegui quanto segue: SQL
insert into customer_activity(day_charge) values('NaN');