Articles

Non interi

Sinossi

Usa i tipi di dati non interi (a virgola mobile e a virgola fissa) per specificare numeri non interi. Diversi tipi di dati in virgola mobile rappresentano diversi numeri di precisione.

tipo di dati descrizione precisione decimale
FLOAT Inexact 32-bit in virgola mobile 7
DOUBLE Inexact 64-bit in virgola mobile 15
DECIMAL Numero a precisione arbitraria nessun limite superiorebound

Sintassi

Dove

  • Colonne di tipo FLOATDOUBLEDOUBLE PRECISION, o DECIMAL possono essere parte del PRIMARY KEY.
  • DOUBLE e DOUBLE PRECISION sono alias.
  • non_integer_floating_point_literal è usato per i valori dei tipi FLOATDOUBLE e DOUBLE PRECISION.
  • non_integer_fixed_point_literal è usato per i valori di tipo DECIMAL.

Semantica

  • Valori di diversi tipi di dati in virgola mobile e a virgola fissa sono comparabili e convertibili tra loro.
    • La conversione da tipi a virgola mobile in DECIMAL solleverà un errore per i valori speciali NaNInfinity, e -Infinity.
  • I valori dei tipi di dati numerici non interi non sono né comparabili né convertibili in interi, sebbene gli interi siano convertibili in essi.
  • L’ordinamento per i valori speciali in virgola mobile è definito come (in ordine crescente): -Infinity, tutti i valori negativi in ordine, tutti i valori positivi in ordine, Infinity, e NaN.

Esempi

ycqlsh:example> CREATE TABLE sensor_data (sensor_id INT PRIMARY KEY, float_val FLOAT, dbl_val DOUBLE, dec_val DECIMAL);
ycqlsh:example> INSERT INTO sensor_data(sensor_id, float_val, dbl_val, dec_val) VALUES (1, 321.0456789, 321.0456789, 321.0456789);

Si possono usare anche letterali interi (usando la semantica upsert per aggiornare una riga nonesistente).

ycqlsh:example> UPDATE sensor_data SET float_val = 1, dbl_val = 1, dec_val = 1 WHERE sensor_id = 2;
ycqlsh:example> SELECT * FROM sensor_data;
 sensor_id | float_val | dbl_val | dec_val-----------+-----------+-----------+------------- 2 | 1 | 1 | 1 1 | 321.04568 | 321.04568 | 321.0456789

Vedi anche

  • Tipi di dati

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *