it-swarm.it

Come posso convertire una stringa in un float in mysql?

Ho una tabella contenente i valori di latitudine e longitudine memorizzati come stringhe (VARCHAR) che vorrei convertire in FLOAT (10,6).

Tuttavia, non sembra esserci un modo semplice per farlo usando CAST() o CONVERT().

Come posso convertire facilmente queste colonne? Questa è una conversione una tantum.

40
JYelton

Si scopre che mi mancava DECIMAL nella descrizione CAST():

DECIMAL[(M[,D])]

Converte un valore in tipo di dati DECIMAL. Gli argomenti opzionali M e D specificano la precisione (M specifica il numero totale di cifre) e la scala (D specifica il numero di cifre dopo il punto decimale) del valore decimale. La precisione predefinita è di due cifre dopo il punto decimale.

Pertanto, la seguente query ha funzionato:

UPDATE table SET
latitude = CAST(old_latitude AS DECIMAL(10,6)),
longitude = CAST(old_longitude AS DECIMAL(10,6));
67
JYelton
mysql> SELECT CAST(4 AS DECIMAL(4,3));
+-------------------------+
| CAST(4 AS DECIMAL(4,3)) |
+-------------------------+
|                   4.000 |
+-------------------------+
1 row in set (0.00 sec)

mysql> SELECT CAST('4.5s' AS DECIMAL(4,3));
+------------------------------+
| CAST('4.5s' AS DECIMAL(4,3)) |
+------------------------------+
|                        4.500 |
+------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CAST('a4.5s' AS DECIMAL(4,3));
+-------------------------------+
| CAST('a4.5s' AS DECIMAL(4,3)) |
+-------------------------------+
|                         0.000 |
+-------------------------------+
1 row in set, 1 warning (0.00 sec)
12
zloctb

Questo si convertirà in un valore numerico senza la necessità di eseguire il cast o specificare la lunghezza o le cifre:

STRING_COL+0

6
Justas