【问题标题】:prevent division by zero in mass query [duplicate]防止在批量查询中除以零[重复]
【发布时间】:2019-11-12 06:11:20
【问题描述】:

SQL 分析:具有涉及除法的计算的大规模查询。因为数据不干净,所以你要防止它在被零除的情况下破坏。

【问题讨论】:

  • 你想用零除数做什么?将表达式计算为 null,使用不同的值,等等?
  • 使用NULLIF? YourColumn/NULLIF(ZeroValueColumn,0)
  • “因为数据不干净,所以你想防止它在被零除的情况下破坏。” 听起来像 SISO(Shit in shit out)避免,最好是清理数据源吗?
  • 最重要的是:如果除数不为零,我希望行为保持不变。如果除数为零,我想防止查询中断。

标签: sql sql-server


【解决方案1】:

代替

SELECT a / b;

使用

SELECT a / NULLIF(b,0);

如果 b=0 而不是在被零除时中断,它将返回 NULL。

【讨论】:

  • 不清楚你为什么投了反对票。
  • 我的猜测是,由于 OP 的问题不清楚,他们给出的答案引起了同一个人 @JohnCappelletti 的反对。总猜心。我认为答案本身没有错,但这个问题当然需要改进。但是,我可以看到,如果您需要在很多情况下更改它,或者如果您不知道哪个表达式导致除以零错误,这将是一个难以实施的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-17
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
  • 1970-01-01
  • 2014-04-08
相关资源
最近更新 更多