Проверьте результат математического выражения в mysql

#mysql #math #filter #where-clause #evaluation

#mysql #математика #Фильтр #где-предложение #оценка

Вопрос:

Допустим, у меня есть таблица, в которой есть четыре столбца ( a , b , oper и c ) и некоторый столбец первичного ключа. oper здесь имеется в виду арифметическая операция ( - * / ).

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

Как мы можем видеть в некоторых случаях, a <oper> b != c . Итак, мой вопрос заключается в том, как отфильтровывать такие случаи?

Я слышал о execute , который используется для выполнения инструкций, но я не знаю, как использовать его внутри where предложения.

Кроме того, я не обобщаю oper это на какую-либо арифметическую операцию, но было бы неплохо узнать, существует ли какая-либо функция.

Ответ №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
 

скрипка

Комментарии:

1. Спасибо, но есть ли какой-нибудь более короткий способ оценить любое общее математическое выражение и сравнить его, может быть, какую-нибудь функцию

2. @vrintle В MySQL нет функции, подобной оценке. А динамический SQL еще сложнее.