MySQL хранимая математическая формула - PullRequest
1 голос
/ 09 февраля 2012

Есть ли способ применить математическую формулу из хранимой строки в Oracle или MySQL?

col1 | col2 | formula
---------------------
 2   |  2   | col1*col2
 2   |  3   | col1+col2 

SELECT * from tbl

result:
col1 | col2 | formula
---------------------
 2   |  2   |   4
 2   |  3   |   5

edit: для каждой строки другая формула

Ответы [ 3 ]

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

Я думаю, вы хотите виртуальный столбец. Смотрите здесь отличную статью о ее настройке и использовании.

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

Я думаю, вы хотите, чтобы база данных анализировала строку формулы. Например, для Oracle вы могли бы

  • Добавить в таблицу столбец, содержащий результат
  • Запустите оператор обновления, который вызовет функцию PL / SQL со значениями столбцов в таблице и текстом формулы

    update {table} set формула_result = fn_calc_result (столбец1, столбец2, формула_колонны);

Функция PL / SQL создаст строку, заменив «col1» и «col2» и т. Д. Фактическими значениями этих столбцов. Вы можете сделать это с регулярными выражениями, если формулы написаны последовательно.

Тогда используйте

execute immediate 'select '||{formula}||' from dual' into v_return;
return v_return;

чтобы вычислить результат и вернуть его.

Конечно, вы также можете написать свой собственный парсер. Если вы решили пойти по этому пути, не забудьте обработать приоритет операций, скобки и так далее.

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

вы можете сделать это с помощью сценария PL / SQL, который вы можете запускать автоматически при вставке данных.

См. http://en.wikipedia.org/wiki/PL/SQL

PL / SQL - это программа, которая выполняется всама база данных.Это довольно легко сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...