【问题标题】:Casting the Bigint number Returns NULL转换 Bigint 数返回 NULL
【发布时间】:2019-06-22 22:42:48
【问题描述】:

我需要将整数值转换为 hive 中的最高数据类型,因为我的值是 25 位

select cast(18446744073709551614 as bigint); 

NULL会为上面的select stmnt返回值;

我很清楚提供的数字大于Bigint 的最大数字。但是我们得到了这样的值,我必须根据这些值计算最大值、最小值、总和、平均值

那么我怎样才能转换这种类型的值,这样我就不会得到 NULL。

【问题讨论】:

    标签: sql hive casting numeric bigint


    【解决方案1】:

    使用decimal(38, 0)存储大于BIGINT的数字,可以存储38位。 BIGINT 可以存储 19 位数字。另请阅读有关decimal type 的手册。

    对于文字后缀BD 是必需的。示例:

    hive> select CAST(18446744073709551614BD AS DECIMAL(38,0))+CAST(18446744073709551614BD AS DECIMAL(38,0));
    OK
    36893488147419103228
    Time taken: 0.334 seconds, Fetched: 1 row(s)
    hive> select CAST(18446744073709551614BD AS DECIMAL(38,0))*2;
    OK
    36893488147419103228
    Time taken: 0.129 seconds, Fetched: 1 row(s)
    

    【讨论】:

    • 感谢它解决了,将输入转换为字符串本身,然后转换为十进制
    猜你喜欢
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多