当前位置: 首页 > 面试题库 >

如何避免SQL中的“被零除”错误?

关飞翼
2023-03-14
问题内容

我有此错误信息:

消息8134,级别16,状态1,第1行除以零错误。

编写SQL代码的最佳方法是什么,这样我就再也看不到此错误消息了?

我可以执行以下任一操作:

  • 添加一个where子句,这样我的除数永远不会为零

或者

  • 我可以添加一个case语句,以便对零进行特殊处理。

使用NULLIF子句的最佳方法是吗?

有没有更好的方法,或者如何执行?


问题答案:

为了避免出现“被零除”错误,我们对此进行了如下编程:

Select Case when divisor=0 then null
Else dividend / divisor
End ,,,

但这是一种更好的方法:

Select dividend / NULLIF(divisor, 0) ...

现在唯一的问题是,如果我使用“ /”键,则要记住NullIf位。



 类似资料:
  • 在使用LabelPropagation时,我经常遇到此警告(这应该是一个错误,因为它完全无法传播): /usr/local/lib/python3.5/dist-packages/sklearn/semi_supervised/label_propagation。py:279:RuntimeWarning:true_divit自身中遇到无效值。label_distributions_/=标准化器

  • 问题内容: 我有一个SQL查询,曾经导致 除以零例外 我将其包装在声明中以阻止这种情况的发生。有没有更简单的方法可以做到这一点? 这是我的代码: 问题答案: 更好的方法是使用NULLIF,如下所示:

  • 我正在将oracle从10升级到12,对于这个特定的项目,我遇到了以下错误: 似乎它没有识别我在DataSource上添加的配置: 我们使用的是Java 8,我们对代码有这些依赖关系: 问题是它正在为另一个项目工作(与这个项目具有相同的结构,但由于某种原因它在这里不起作用) 是否有任何遗漏或我可以找到问题并解决问题的地方?

  • 当方法调用的嵌套层级过深,导致栈空间耗尽时,会抛出StackOverflowError错误。 尝试复现问题,代码如下:

  • 问题内容: 我试图写一个近似平方根的函数(我知道有数学模块……我想自己做),但我被浮点运算搞砸了。如何避免这种情况? 使用它会产生以下结果: 我意识到我可以使用,但是我希望能够做到这一点非常准确。我希望能够计算出6或7位数字。如果我四舍五入,那将是不可能的。我想了解如何在Python中正确处理浮点计算。 问题答案: 这实际上与Python无关- 使用硬件的二进制浮点算法,您会在任何语言中看到相同的

  • 问题内容: 我正在使用大量文本更新BLOB,但出现此错误: 有什么办法解决吗? 文本长度为2670个字符,通过进行了转换,如[我如何在Oracle SQL Developer中编辑BLOB(包含JSON)所述。并且全部在查询中的一行上。 更新: 有问题的BLOB已经包含2686个字符长的文本,比我要插入的文本长。 问题答案: A限制为2000个字节。如果您的数据长于此长度,则需要将其存储在a中,然