我的varchar
类型表中有纬度和纵向值列表。我希望他们是float
。如何将varchar
转换为float
?
例如:
36.26056695
类型的varchar
应转换为36.26056695
类型的float
。
-99.11080846
的 varchar
应转换为-99.11080846
类型的float
答案 0 :(得分:2)
使用投放运算符
例如
选择 CAST (' 36.26056695' AS 浮动)FROM 表强>
答案 1 :(得分:1)
这取决于“丢失数据”的含义。
如果你的意思是没有精确度,“浮动”将是不可靠的;它只能可靠地存储2的幂的倍数(.125,.25,.375等......)
如果你只是意味着在没有空白的情况下转换字段,最好的选择是这样的:
ALTER TABLE `the_table`
ADD COLUMN `dec_val` NOT NULL DECIMAL(11, 8)
;
UPDATE `the_table`
SET `dec_val` = CAST(`str_val` AS DECIMAL(11, 8))
;
ALTER TABLE `the_table`
DROP COLUMN `str_val`
;
-- The below is only needed if you wanted to do something like rename the
-- new column to the same name as the original. Otherwise, you could just
-- have created the new column with the desired name.
ALTER TABLE `the_table`
CHANGE COLUMN `dec_val` `desired_column_name` NOT NULL DECIMAL(11, 8)
;
当然,您可以使用FLOAT而不是DECIMAL,但这样可以保留准确的值。
注意:只需将原始列的定义更改为DECIMAL(11,8) 可能 ,但这可以让您检查转换后的值(在UPDATE之后)你放下原来的那些。