Есть ли способ «интерполировать» значение столбца в качестве оператора сравнения в предложении WHERE в MySQL?

0

Скажем, у меня есть столбец с именем "compare_operator" со значениями типа ">", "=", "<". в таблице "Продукты". Есть ли способ использовать его в предложении WHERE следующим образом?

SELECT products.name FROM products WHERE products.price #{comparison_operator} products.cost

Я считаю, что ответ на этот вопрос - нет, но хотелось бы посмотреть, есть ли альтернативный путь для достижения той же цели. Спасибо!

  • 0
    MySql имеет функцию "eval"?
  • 0
    Более или менее да @theGleep MySQL имеет предложения PREPARE / EXECUTE, чтобы разрешить динамическое выполнение SQL
Теги:
where
comparison-operators
string-interpolation

1 ответ

0
Лучший ответ

Да, но не так.

CASE
  WHEN products.comparison_operator = ">"
    THEN products.price > products.cost
  WHEN products.comparison_operator = "<"
    THEN products.price < products.cost
  ELSE
    products.price = products.cost
END
  • 0
    Да, я подумал о том, чтобы сравнивать Оператор сравнения в каждом отдельном случае, но это кажется довольно громоздким. Я думаю, что нет способа сделать это более динамично?
  • 0
    Вы могли бы написать UDF, чтобы поместить все это в одно место, вместо того, чтобы писать везде.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню