Как рассчитать формулу в поле, возвращаемом запросом? - PullRequest
2 голосов
/ 09 февраля 2012
Select table1.column1, table2.column1, calcuate(table1.column2) as result
from table1, table2
where table1.id = table2.fkid

Скажем, table1.column2 - это varchar, а значение равно "= table1.column1 * table2.column1".Я хочу, чтобы мой запрос вычислял эту формулу, а не возвращал текст.Мысли? * * 1002

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Насколько я знаю, нет ничего похожего на оценку JavaScript в SQL. Если у вас есть только несколько формул, вы можете попробовать переключение CASE в вашем SQL. Но в целом вам, возможно, следует переосмыслить свое Architecure - такие утверждения SQL сложно поддерживать, если у вас есть изменения. (И вы всегда должны ожидать изменений ...)

Пример:

Select 
  a.column1, 
  b.column1, 
  CASE 
    WHEN b.column2 = 'Multiply' THEN a.column1 * b.column1
    WHEN b.column2 = 'Divide' THEN a.column1 / b.column1
    ELSE 0
  END
from table1 a, table2 b
where a.id = b.fkid
0 голосов
/ 09 февраля 2012

В MSSQL у вас есть команда EXEC, но в MySQL ее нет.У вас есть 2 варианта:

  • Создайте первый запрос, который извлечет вашу формулу, затем динамически создайте запрос (могу ли я поднять предупреждение о безопасности / SQL-инъекции)
  • Создать сохраненныйпроцедура: http://forums.mysql.com/read.php?98,152150,152161#msg-152161
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...