arithmet_overflow错误类
<消息>
。<可选>
必要时设置<设置>
以“false”绕过此错误。
解释
当Databricks执行的数学操作超出所执行操作的数据类型的最大范围时,就会发生算术溢出。
在许多情况下,数学是在操作符的操作数的最小公共类型或函数的参数的最小公共类型中执行的。
加上两个类型的数字非常小的整数
能否迅速超出限定的种类范围-128年
来+ 127
。其他类型,比如时间戳
而且时间间隔
也有很大,但有限的范围。
有关类型域的定义,请参见数据类型的定义。
例子
——一个小数字溢出>选择One hundred.Y*One hundred.Y;(ARITHMETIC_OVERFLOW]One hundred.年代*One hundred.年代引起的溢出。如果必要的集ansi_mode来“假”(除了为ANSI时间间隔类型)来绕过这错误。——通过强制转换其中一个操作数,使用更宽的数字来执行该操作>选择One hundred.Y*投(One hundred.Y作为整数);10000—可以重写的复杂表达式的溢出>选择One hundred.Y*10Y/5;(ARITHMETIC_OVERFLOW]One hundred.年代*10年代引起的溢出。如果必要的集火花。sql。ansi。启用来“假”(除了为ANSI时间间隔类型)来绕过这错误。——重写表达式>选择One hundred.Y/5*10Y;200。0偶尔的夸夸其谈是可以容忍的>选择__arg1*最长从值(One hundred.Y,One hundred.Y),(20.Y,5Y)作为t(__arg1,最长);(ARITHMETIC_OVERFLOW]One hundred.年代*One hundred.年代引起的溢出。如果必要的集ansi_mode来“假”(除了为ANSI时间间隔类型)来绕过这错误。——允许溢出被视为NULL>选择try_multiply(__arg1,最长)从值(One hundred.Y,One hundred.Y),(20.Y,5Y)作为t(__arg1,最长);零One hundred.在Databricks SQL中暂时禁用ANSI模式以容忍错误溢出。>集ANSI_MODE=假;>选择__arg1*最长从值(One hundred.Y,One hundred.Y),(20.Y,5Y)作为t(__arg1,最长);16One hundred.>集ANSI_MODE=真正的;——在Databricks运行时暂时禁用ANSI模式,以容忍不正确的溢出。>集火花。sql。ansi。启用=假;>选择__arg1*最长从值(One hundred.Y,One hundred.Y),(20.Y,5Y)作为t(__arg1,最长);16One hundred.>集火花。sql。ansi。启用=真正的;