2016-10-30 10 views
0

今日私はクエリを使用します select 1000/0期待される結果はエラーまたは例外でなければなりませんが、mysqlは私にnullを返す必要があります。それは、このメッセージなぜMySQLがnullを返す1000/0

答えて

1

を返すこれはwell-documented動作です:デフォルトでは

、ゼロによる除算はNULLと警告なしの結果を生成します。 SQLモードを適切に設定することにより、ゼロ除算を に制限することができます。有効ERROR_FOR_DIVISION_BY_ZERO SQLモードでは

、MySQLは異なり、ゼロによる除算 を処理します。strictモードが有効でない場合

  • 、警告が発生します。

  • strictモードが有効な場合、ゼロ除算を含む挿入と更新は禁止され、エラーが発生します。

私は(他のほとんどのデータベースは、エラーを発生さという理由だけで)この動作に依存していることはありません。用途:

select 100/nullif(0, 0) 

ので、あなたが明示的にNULL値の代わりに、データベースの設定に頼っを生み出します。

関連する問題