Как я могу преобразовать строку в число с плавающей точкой в ​​MySQL? - PullRequest
40 голосов
/ 10 сентября 2011

У меня есть таблица, содержащая значения широты и долготы, хранящиеся в виде строк (VARCHAR), которые я хотел бы преобразовать в FLOAT (10,6).

Однако, как представляется, не существует простого способасделать это, используя CAST() или CONVERT().

Как легко конвертировать эти столбцы?Это разовое преобразование.

Ответы [ 3 ]

67 голосов
/ 10 сентября 2011

Оказывается, я просто пропустил DECIMAL в описании CAST():

DECIMAL[(M[,D])]

Преобразует значение в тип данных DECIMAL. Необязательные аргументы M и D указывают точность (M указывает общее количество цифр) и масштаб (D указывает количество цифр после десятичной точки) десятичного значения. Точность по умолчанию составляет две цифры после десятичной точки.

Таким образом, сработал следующий запрос:

UPDATE table SET
latitude = CAST(old_latitude AS DECIMAL(10,6)),
longitude = CAST(old_longitude AS DECIMAL(10,6));
12 голосов
/ 12 ноября 2014
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)
5 голосов
/ 25 мая 2018

Это преобразует в числовое значение без необходимости приведения или указания длины или цифр:

STRING_COL+0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...