#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 еще сложнее.