Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Есть ли у кого простенький Parser средствами T-SQL  [new]
hat07
Member

Откуда:
Сообщений: 24
Господа,
нужен парсер для анализа выражений в Stored Procedures, типа:

X1+10%
X2-1.5%
X3*0.12

где X1,X2,X3 - цыфровые переменные или параметры процедур.
(Приведенные выше выражения я вычитываю построчно из таблицы,
результат должен положить в другую таблицу.
Заказчик пока не обещал сложных выражений, но как опыт показывает,
всё может измениться и в худшую сторону.)

Конечно, пока буду сам "строгать" парсер,
но может кто уже имеет такую штучку (или где-нить видел).

Заранее благодарен.
9 авг 05, 12:39    [1771456]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли у кого простенький Parser средствами T-SQL  [new]
aleks2
Guest
hat07
Господа,
нужен парсер для анализа выражений в Stored Procedures, типа:

X1+10%
X2-1.5%
X3*0.12

где X1,X2,X3 - цыфровые переменные или параметры процедур.
(Приведенные выше выражения я вычитываю построчно из таблицы,
результат должен положить в другую таблицу.
Заказчик пока не обещал сложных выражений, но как опыт показывает,
всё может измениться и в худшую сторону.)

Конечно, пока буду сам "строгать" парсер,
но может кто уже имеет такую штучку (или где-нить видел).

Заранее благодарен.


replace(@str,...)
+
ехес('динамический SQL')
+
sp_executesql как пример для подражания
------------
а 10% это что?
9 авг 05, 13:29    [1771694]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли у кого простенький Parser средствами T-SQL  [new]
hat07
Member

Откуда:
Сообщений: 24
Выражение Х1+10% имеет следующий смысл:

если Х1=400, то в результате вычисления выражения будем иметь
400+10% (от Х1, т.е. от 400) = 440

Но вопрос был задан несколько по-иному: нет ли где уже написанного
софта (на T-SQL), который позволяет
1) оценить корректность выражений типа
<переменная><знак-операции><операнд>
2) раскидать проверенный код по полочкам
т.е. подставить значение переменной, выбрать для операции правильный знак, загрузить в операнд правильное значение;
------------------------------------------------
дальше уже понятно, дополнительный софт не требуется, но процесс
будет идти следующим образом:

3) вычислить выражение согласно значений переменных и операндов.
т.е. если переменная равна 400,
знак есть '+'
а операнд есть 10%,
то сначала вычисляем 10% от 400, затем прибавляем их к 400,
естественно результат должен быть 440
9 авг 05, 13:57    [1771804]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли у кого простенький Parser средствами T-SQL  [new]
aleks2
Guest
hat07
Но вопрос был задан несколько по-иному: нет ли где уже написанного
софта (на T-SQL), который позволяет
1) оценить корректность выражений типа
<переменная><знак-операции><операнд>
2) раскидать проверенный код по полочкам
т.е. подставить значение переменной, выбрать для операции правильный знак, загрузить в операнд правильное значение;


Ответ был: есть. Это динамический T-SQL.
Чем ближе к его синтаксису вы будете строить свои выражения, тем проще вам будет жить.
-------------------
т.е. меняйте X1+10% на 1.1*X1.
9 авг 05, 14:39    [1771951]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли у кого простенький Parser средствами T-SQL  [new]
BusyMan
Member

Откуда: Москва
Сообщений: 4927
Есть на .NET - переделай на TSQL. нужен?

P.S. Можно просто Бизик admin@busyman.ru ICQ# 131833549
Картинка с другого сайта.
9 авг 05, 15:04    [1772071]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить