JYe*_*ton 42 mysql type-conversion
我有一个包含存储为strings(VARCHAR)的纬度和经度值的表,我想将其转换为FLOAT (10,6).
但是,似乎没有一种直接的方法来使用CAST()或执行此操作CONVERT().
如何轻松转换这些列?这是一次性转换.
JYe*_*ton 68
事实证明我只是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));
Run Code Online (Sandbox Code Playgroud)
zlo*_*ctb 12
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
93066 次 |
| 最近记录: |