【问题标题】:Check the result of a math expression in mysql检查mysql中数学表达式的结果
【发布时间】:2020-11-23 17:13:20
【问题描述】:

假设我有一个表,它有四列(aboperc)和一些主键列。 oper 在这里表示算术运算 (+ - * /)。

a  b  oper  c
-------------
2  3  +     5
4  2  /     3
6  1  *     9
8  5  -     3

在某些情况下,我们可以看到a <oper> b != c。那么,我的问题是如何过滤掉这种情况?

听说过execute,用于执行语句,但不知道在where子句中如何使用。

另外,我没有将oper 推广到任何算术运算,但如果存在任何函数,我会很高兴。

【问题讨论】:

    标签: mysql math filter where-clause evaluation


    【解决方案1】:
    SELECT *
    FROM table 
    WHERE с != CASE oper WHEN '+' THEN a+b
                         WHEN '-' THEN a-b
                         WHEN '*' THEN a*b
                         WHEN '/' THEN a/b
                         ELSE NULL END
    

    fiddle

    【讨论】:

    • 谢谢,但是有没有更短的方法来评估任何一般的数学表达式并比较它,也许是一些函数
    • @vrintle MySQL 没有类似 EVALUATE 的功能。而动态 SQL 则更加复杂。
    猜你喜欢
    • 2011-06-27
    • 2021-11-12
    • 2020-08-05
    • 2013-12-06
    • 2014-04-08
    • 2016-01-09
    • 2016-04-17
    • 1970-01-01
    • 2012-06-24
    相关资源
    最近更新 更多