Как преобразовать строку в float в mysql?
У меня есть таблица, содержащая значения широты и долготы, хранящиеся в виде строк (VARCHAR
), которые я хотел бы преобразовать в FLOAT (10,6)
.
Однако, похоже, нет простого способа сделать это с помощью CAST()
или CONVERT()
.
Как легко конвертировать эти столбцы? Это одноразовое преобразование.
Ответы
Ответ 1
Оказывается, я просто отсутствовал 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));
Ответ 2
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)