Используй динамические запросы, напиши с помощью
create function свою, в которой с помощью
prepare и execute исполняй sql запрос, собираемый из твоей строки в таблицу плюс добавив нужные таблицы, потребность в таблицах нужно будет как то вычислять, анализируя выражение, либо задавать дополнительным полем (рекомендую этот анализ и формирование динамического sql запроса выполнять в тригерах или отдельным вызовом, который ты будешь вызывать после обновления своих формул), вот пример если используются только одна таблица, а логика фильтрации в ней заранее понятна:
set sql=concat('select ',expr,' into @result from my_table where id=',id)
prepare stmt from sql;
execute stmt;
deallocate prepare stmt;
set result = @result;
return result;
в этом случае expr будет в формате sql а имена переменных из таблицы
Если таблиц будет несколько, то добавляй имена таблиц, а анализ запроса делай через поиск "
имя_таблицы." и делай соответствующий join и фильтрацию по индексам foreign и primary key (не советую делать мега алгоритм, разбирающий всю базу по структурам, хотя если запилишь, будет наверное мощная и полезная система, скорее всего у тебя будет 2-3 запроса, и нужно будет только понять, когда какой использовать)