powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Разобрать строку и заменить переменные на значения.
17 сообщений из 17, страница 1 из 1
Разобрать строку и заменить переменные на значения.
    #38483411
kharkov_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый, прошу помощи.
В mysql не особо спец, возник вопрос.

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

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

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

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

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

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

Можно тупо функцией REPLACE(), но там всплывает куча тонкостей. Например, что будет (и что должно быть), если в каком-то из полей встретится $field# ?
...
Рейтинг: 0 / 0
Разобрать строку и заменить переменные на значения.
    #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
Разобрать строку и заменить переменные на значения.
    #38483898
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kharkov_maxВот теперь не понятно как несколько raplace сделатьВложить один в другой, очевидно. Это же простая функция.
...
Рейтинг: 0 / 0
Разобрать строку и заменить переменные на значения.
    #38483923
kharkov_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да в том то и дело что так

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

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

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

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

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

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

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

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

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

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

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

Cygapb-007,

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

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


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