Tipi numerici - Amazon Redshift

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

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 a 999.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-number

  • Infinity: 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');