【发布时间】:2022-01-04 06:36:53
【问题描述】:
我在 Cloudera 上有一个带有数字字符串列的脏表。有些数字是 8 位数字形式,而另一些数字是科学记数法,例如91234567 与 9.1234567E7。当数字以零结尾时,小数点较少,例如9.12E7 表示 91200000。如何将它们全部转换为它们的 8 位表示?
我尝试了以下方法,但无济于事:
-- Remove 'E7' then convert the string to a decimal
,CASE WHEN m_number LIKE '%E7'
THEN CAST(REPLACE(m_number, 'E7', '') AS DECIMAL(10,7)) * POW(10, 7)
ELSE m_number END AS m_clean
返回:AnalysisException: Incompatible return types 'DECIMAL(10,7)' and 'STRING' of exprs 'CAST(replace(m_number, 'E7', '') AS DECIMAL(10,7))' and 'm_number'.
【问题讨论】:
标签: sql hadoop hive cloudera impala