我有表的hive table table1架构看起来像这样
[CREATE TABLE table1(p_decimal1 DECIMAL(38,5)) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE]
我在表格中的价值低于
row : col(p_decimal1)
row1 : 12345123451234512345123.45123
在后期阶段 如果我执行
select CAST(p_decimal1 AS DOUBLE) from table1;
查询然后我得到NULL
作为输出。
你能解释一下为什么它会变成NULL吗?
答案 0 :(得分:0)
DECIMAL是具有范围(大约-10e308到10e308)的更高级别的浮点数据类型,其中double是普通浮点数而不是大值。
因此,在您的情况下,您试图将大量数据输入小数据类型,这就是enter image description here获得NULL的原因。
答案 1 :(得分:0)
允许从十进制转换为int,double,string和boolean,因此您可能会遇到错误。您可以向蜂巢社区报告它将被修复。
然而,我发现这个hack将十进制转换为double。虽然我在大部分工作中都没有使用/测试过,但您可以自行决定使用它。
从table1中选择强制转换(强制转换(上(p_decimal1)为字符串)为double);
结果:1.2345123451234513E22