为什么MySQL返回null 1000/0

时间:2016-10-30 12:54:40

标签: mysql sql

今天我使用了一个查询  select 1000/0预期结果必须是错误或异常,但mysql会将null返回null,任何人都可以告诉我原因。它会返回此消息

1 个答案:

答案 0 :(得分:1)

这是well-documented行为:

  

默认情况下,除以零会产生NULL结果且没有警告。   通过适当地设置SQL模式,可以将除以零   限制。

     

启用ERROR_FOR_DIVISION_BY_ZERO SQL模式后,MySQL会处理   除以零之分:

     
      
  • 如果未启用严格模式,则会发出警告。

  •   
  • 如果启用了严格模式,则禁止包含除零的插入和更新,并发生错误。

  •   

我永远不会依赖这种行为(仅仅因为大多数其他数据库都会产生错误)。使用:

select 100 / nullif(0, 0)

因此您明确生成NULL值而不是依赖于数据库的设置。