Я изучаю параметры для динамического вычисления значений на основе ввода строки. Возьмем, например, следующий ввод строки.T-SQL Parse String и выполнять действия
"(32+35)/(12+34)"
Номера 32, 35, 12 и 34 являются «заполнителями» для идентификаторов. В разговорной речи я пытаюсь сделать следующее. Возьмите метрику с идентификатором 32 и примените к ней некоторую функцию, которая возвращает значение. Затем добавьте это значение к значению, возвращенному той же функцией, примененной к метрику id 35, и так далее и т. Д.
(dbo.foo(32) + dbo.foo(35))/(dbo.foo(12) + dbo.foo(34))
Возможно, было бы проще начать с простой строки добавления и работать с другими операторами (-, /, *).
Возможно ли это в tsql? Открытые для регулярных выражений (имеют функцию regex tsql) и все, что вы можете придумать.
Возможно, замените регулярное выражение на целые числа, чтобы вставить имя функции в строку, и затем exec() строку, чтобы получить результат?
Давайте не будем обсуждать плюсы и минусы такого метода ... Я знаю, что это не истинное решение «базы данных» для моей проблемы, но вы хотите изучить его больше.
Возможно, вы не получите много полезных ответов, так как вы в основном говорите «Я знаю, что это плохое решение, но вы хотите сделать это в любом случае». Я могу задать вопрос о automotive.se о лучшем способе смазки моего двигателя песком, но это не значит, что я не должен ожидать, что его исправят. ** Удачи! ** – JNK
JNK, вы, безусловно, правы. Однако я никогда не говорил, что думаю, что это плохое решение, а не «настоящая база данных». Определенные ситуации требуют разных решений и без полной справки по моей проблеме. Я не думаю, что вы можете судить о одном решении над другим. – thomas
Несомненно, мы можем судить об этом. Суждение может быть неточным без знания специфики вашей ситуации, но огромный опыт многих людей здесь приводит меня к мысли, что если у них есть проблемы даже без скрытых особенностей, что вы, вероятно, будете в неправильном направлении. Я также добавлю, что почти все думают, что их ситуация достаточно уникальна, чтобы оправдать обычную мудрость. По моему опыту большинство из них ошибаются. –