このコードはaとbを操作し、resultがcと等しいかどうかをチェックします。 「はい」の場合は、この行を印刷してください。私の質問は 行結果(A/B)= 0を表示するには、このコードを変更する方法であるmysqlクエリにゼロ値を表示するには?
SELECT id, a, b, operation, c
FROM expressions
where
case
when operation LIKE '+' AND (a + b = c) then c
when operation LIKE '-' AND (a - b = c) then c
when operation like '/' AND (a/b = c) then c
when operation like '*' AND (a * b = c) then c
ELSE FALSE END;
出力:
id a b operation c
1 2 3 + 5
4 4 7 * 28
11 0 1 / 0
14 239 0 * 0
15 18 18 - 0
1、2行がOKと印刷されています。 3行、4行、5行は印刷されるべきですが、そうではありません! a/b = 0の場合、SQLクエリの2番目の条件はfalseです。 - 行は印刷されません。 0/1 = 0です。これは0で、印刷する必要があります。 1/0とは対照的に、印刷するべきではありません。 私のソリューションは、符号なし(a/b = c)を符号なしにキャストすることですが、機能しません。
もう1つ考えてください: ...(操作LIKE '/' AND(a/b = c)AND b!= 0 AND c * b = a)または... – user3455638
@ user3455638これらの条件は重要ではありません。なぜなら、MySQLはブール式の評価の順序を保証しないからです。 'NULLIF()は、ゼロ除算を避けるためのより良い方法です。 –