配置单元列转换从十进制转换为双精度会导致 NULL



我有蜂巢表表1表的模式看起来像这样

[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 的形式出现吗?

DECIMAL 是更高级别的浮点数据类型,范围为 (大约 -10e308 到 10e308(,其中双精度表示普通浮点数,而不是大值。

因此,在您的情况下,您正在尝试将大值转换为小数据类型,这就是您在此处输入图像描述获得 NULL 的原因。

允许

从十进制转换为整数、双精度、字符串和布尔值,因此您可能会遇到错误。你可以向蜂巢社区报告它 si 它将被修复。

但是,我发现这个技巧可以将十进制转换为双精度。 虽然我没有在我的大部分工作中使用它/测试过它,但您可以自行决定使用它。

从表1中选择铸造(铸造(上(p_decimal1(作为字符串(作为双精度(;

结果:1.2345123451234513E22

最新更新