我正在将csv文件中的数据加载到aws雅典娜的表中。有一个字符串列具有varchar值,例如 ABC123123
大量的数字,比如 2588000000
(以科学格式2.588e+10显示)在解析csv时,我只想将科学格式转换为float,以便在 2588000000
而不是科学的形式。我尝试了以下方法: SELECT ..., cast(column2 as float) FROM "db"."table"
但我显然不能转换为float,因为同一列中有varchar值。
我还尝试了以下方法:
SELECT column1,
(CASE
WHEN column2 like '%E-%' THEN CAST(column2 AS FLOAT))
WHEN column2 like '%E+%' THEN CAST(column2 AS FLOAT))
ELSE column2
END)
FROM "db"."table"
雅典娜犯了这个错误
感谢您的帮助!
2条答案
按热度按时间rur96b6h1#
尝试
try
:然而,至少在当前的presto中,双数字最终被转换为
varchar
用科学记数法,所以你可能需要decimal
:yqhsw0fo2#
嗯。你需要一个
case
表达式返回字符串。因此,将浮点值格式化为字符串: