今天我使用了一个查询
select 1000/0
预期结果必须是错误或异常,但mysql会将null返回null,任何人都可以告诉我原因。它会返回此消息
答案 0 :(得分:1)
这是well-documented行为:
默认情况下,除以零会产生NULL结果且没有警告。 通过适当地设置SQL模式,可以将除以零 限制。
启用
ERROR_FOR_DIVISION_BY_ZERO
SQL模式后,MySQL会处理 除以零之分:
如果未启用严格模式,则会发出警告。
如果启用了严格模式,则禁止包含除零的插入和更新,并发生错误。
我永远不会依赖这种行为(仅仅因为大多数其他数据库都会产生错误)。使用:
select 100 / nullif(0, 0)
因此您明确生成NULL
值而不是依赖于数据库的设置。