Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Разобрать строку и заменить переменные на значения. / 17 сообщений из 17, страница 1 из 1
29.11.2013, 14:48:52
    #38483411
kharkov_max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать строку и заменить переменные на значения.
День добрый, прошу помощи.
В mysql не особо спец, возник вопрос.

Есть хранимая процедура, в процедуру необходимо передать строку как текст к примеру:

call procedure("Какой-то текст $field1 $field2 $ field3")
или
call procedure("Какой-то текст $field3 еще какой-то текст $field3 еще текст")

Значения $field# в тексте заменить на значения заранее известных полей
т.е. к примеру $field1 = mytable.field1, $field2 = mytable.field2 и т.д.

И записать полученную строку в какое то поле таблицы.
В передаваемой строке поля $field# могут находится в произвольном порядке и повторяться, текст аналогично.

Заранее спасибо ...
...
Рейтинг: 0 / 0
29.11.2013, 15:46:43
    #38483544
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать строку и заменить переменные на значения.
Ну так и заменяй перед вызовом. MySQL-то тут каким боком?
...
Рейтинг: 0 / 0
29.11.2013, 17:24:39
    #38483787
kharkov_max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать строку и заменить переменные на значения.
Вы наверное меня не поняли

Мне необходимо передать в процедуру текст, заменить в нем определенные "слова/переменные" на значения полей таблицы, и полученный текст вставить в опредленное поле таблицы и так пройтись и обновить это поле по всей таблице.
...
Рейтинг: 0 / 0
29.11.2013, 17:36:21
    #38483808
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать строку и заменить переменные на значения.
kharkov_max,

Можно тупо функцией REPLACE(), но там всплывает куча тонкостей. Например, что будет (и что должно быть), если в каком-то из полей встретится $field# ?
...
Рейтинг: 0 / 0
29.11.2013, 17:44:49
    #38483820
kharkov_max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать строку и заменить переменные на значения.
Вот сейчас кручу Raplace.

Получилось нечто
Update ....

set l.md = replace(m_d,'$name',l.n)

where ....

Вызываю call procedure("Пользователь $name"), все отрабатывает как нужно.

Вот теперь не понятно как несколько raplace сделать, для вот такого вызова
call procedure("Пользователь $name $first_name какой то текст")
...
Рейтинг: 0 / 0
29.11.2013, 18:22:45
    #38483898
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать строку и заменить переменные на значения.
kharkov_maxВот теперь не понятно как несколько raplace сделатьВложить один в другой, очевидно. Это же простая функция.
...
Рейтинг: 0 / 0
29.11.2013, 18:34:18
    #38483923
kharkov_max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать строку и заменить переменные на значения.
Да в том то и дело что так

set l.md = replace(replace(m_d,'$first_name',l.nnnn),'$name',l.n)

не работает, ошибку выдает ...
...
Рейтинг: 0 / 0
29.11.2013, 18:38:14
    #38483934
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать строку и заменить переменные на значения.
kharkov_maxошибку выдает ...показывайте
...
Рейтинг: 0 / 0
29.11.2013, 18:43:24
    #38483947
kharkov_max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать строку и заменить переменные на значения.
Странно...

заменил $first_name на $first_n и все заработало ...
...
Рейтинг: 0 / 0
29.11.2013, 18:55:05
    #38483970
kharkov_max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать строку и заменить переменные на значения.
Разобрался )))

Входящий параметр ограничивал
Create procedure .... ( ... , in m_d varcha(20))

Переменная больше получалась в результате, увеличил кол-во символов и все заработало.

Всем спасибо, результат достигнут ...
...
Рейтинг: 0 / 0
02.12.2013, 08:48:52
    #38485472
kharkov_max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать строку и заменить переменные на значения.
Вот задумался на счет оптимизации запроса ...

Ведь если мне придется передавать к примеру максимум 30 параметров, а реально я буду передавать только 2 или 3 , то выше описанный механизм выполнится 30 раз, т.е. replace отработает 30 раз.

Можно как то это разложить на цикл и case ...
Что бы отрабатывать только те переменные что указаны в параметре ?
...
Рейтинг: 0 / 0
02.12.2013, 10:20:33
    #38485582
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать строку и заменить переменные на значения.
Replace всегда начинает с поиска Instr (а как иначе?) - а коли так, то и нет особого смысла.
Думать нужно об оптимизации не запроса, а процесса. Ибо всё действо целиком смотрится черезпопно... посему скорее всего где-то косяк в выборе пути.
...
Рейтинг: 0 / 0
02.12.2013, 10:38:58
    #38485609
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать строку и заменить переменные на значения.
kharkov_maxВот задумался на счет оптимизации запроса ...

Ведь если мне придется передавать к примеру максимум 30 параметров, а реально я буду передавать только 2 или 3 , то выше описанный механизм выполнится 30 раз, т.е. replace отработает 30 раз.

Можно как то это разложить на цикл и case ...
Что бы отрабатывать только те переменные что указаны в параметре ?30 replace выполняются практически столько же времени, сколько и 2-3
...
Рейтинг: 0 / 0
02.12.2013, 11:18:40
    #38485667
kharkov_max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать строку и заменить переменные на значения.
Akina,

Ну как бы другого метода (простого и тупого) я не нашел.
Можно конечно цикл развернуть, но боюсь что он только усложнит запрос и запрос будет работать дольше.

Cygapb-007,

Спасибо попробую, возможно Вы правы ...
...
Рейтинг: 0 / 0
02.12.2013, 12:03:14
    #38485740
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать строку и заменить переменные на значения.
kharkov_maxНу как бы другого метода (простого и тупого) я не нашел.
И решил, что его не существует...
...
Рейтинг: 0 / 0
02.12.2013, 14:11:59
    #38485978
kharkov_max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать строку и заменить переменные на значения.
Akina,

Нет, если у вас есть другие идеи подскажите пожалуйста.
...
Рейтинг: 0 / 0
02.12.2013, 14:20:14
    #38485990
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать строку и заменить переменные на значения.
Я же сказал - оптимизировать надо процесс.
Пока же о том, что есть процесс, знаешь только ты. А нам известны лишь твои попытки выполнить один из его этапов, причём выбранным тобой способом.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Разобрать строку и заменить переменные на значения. / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]