【DM版本】: dm8开发版
【操作系统】:centos7.9
【CPU】:2
【问题描述】*:数值计算,数据溢出
SQL中计算时,出现Data overflow数据溢出,能进行隐式转换吗?SQL将会会更健壮
SQL中必须要使用cast显示转换为DEC数值类型
SQL> select 2147483646*8 from dual;
select 2147483646*8 from dual;
[-6102]:Data overflow.
SQL> select cast(2147483646 as DEC)*8/1024/1024/1024 from dual;
CAST(2147483646ASDEC)*8/1024/1024/1024
--------------------------------------
15.99999998509883880615234375
您好,由于int类型取值范围为:-2147483648
(-2^31)~ +2147483647(2^31-1),因此会出现数据溢出的情况。这种情况下是需要进行隐式转换才可以规避的。你这个问题提出的也非常好,我们也会针对这个问题考虑如何去避免这个问题