51 votes

Comment puis-je convertir une chaîne de caractères en flottant dans mysql ?

J'ai une table contenant des valeurs de latitude et de longitude stockées sous forme de chaînes de caractères ( VARCHAR ) que j'aimerais convertir en FLOAT (10,6) .

Cependant, il ne semble pas y avoir de moyen direct de faire cela en utilisant CAST() ou CONVERT() .

Comment puis-je convertir ces colonnes facilement ? Il s'agit d'une conversion unique.

91voto

JYelton Points 14014

Il s'avère que j'ai juste manqué DECIMAL sur le CAST() description :

DECIMAL[(M[,D])]

Convertit une valeur en type de données DECIMAL. Les arguments facultatifs M et D spécifient la précision (M indique le nombre total de chiffres) et l'échelle (D indique le nombre de chiffres après la virgule) de la valeur décimale. La précision par défaut est de deux chiffres après la virgule.

Ainsi, la requête suivante a fonctionné :

UPDATE table SET
latitude = CAST(old_latitude AS DECIMAL(10,6)),
longitude = CAST(old_longitude AS DECIMAL(10,6));

20voto

zloctb Points 531
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)

16voto

Justas Points 388

Cela convertira en une valeur numérique sans qu'il soit nécessaire de procéder à un moulage ou de spécifier la longueur ou les chiffres :

STRING_COL+0.0

Si votre colonne est un INT On peut laisser de côté le .0 pour éviter les décimales :

STRING_COL+0

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X