powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Обновление данных с помощью replace
9 сообщений из 9, страница 1 из 1
Обновление данных с помощью replace
    #39663619
execa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток! Прошу вашей помощи в содействии решения такой проблемы.

Есть некая таблица, table1. В ней есть колонка, с данными записанными через запятую (data).
Есть еще одна таблица table2 (old_value, new_value), со списком соответствий замен.
Необходимо пробежать по table1.data и заменить в ней все вхождения old_value на new_value. Replace ожидает одно значение в искомый и заменяемый текст. А хотелось бы пробежать именно по списку из нескольких значений. Заранее спасибо за любую помощь.
...
Рейтинг: 0 / 0
Обновление данных с помощью replace
    #39663625
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
execa,

Как должна работать логика, если new_value одной записи является значением old_value другой?
...
Рейтинг: 0 / 0
Обновление данных с помощью replace
    #39663639
execa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

old_value и new_value уникальны каждое в своем множестве,
если раньше было old_value скажем a, new_value test
а другой записи old_value test, а стало b
этот момент можно не учитывать, проще вручную заранее такие коллизии отловить
...
Рейтинг: 0 / 0
Обновление данных с помощью replace
    #39663659
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЦАП -> АЦП -> ЦАП

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

How to split comma separated string and pass to IN clause of select statement
...
Рейтинг: 0 / 0
Обновление данных с помощью replace
    #39663662
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
execaВ ней есть колонка, с данными записанными через запятую (data).

execaenv,
old_value и new_value уникальны каждое в своем множестве,
если раньше было old_value скажем a, new_value test


Выдели подстроку ",old_value," и замени её на ",new_value,"
...
Рейтинг: 0 / 0
Обновление данных с помощью replace
    #39663696
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
execa..В ней есть колонка, с данными записанными через запятую ..
если будете достаточно упорны, то сделаете базу данных
...
Рейтинг: 0 / 0
Обновление данных с помощью replace
    #39663786
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawishexeca..В ней есть колонка, с данными записанными через запятую ..
если будете достаточно упорны, то сделаете базу данных
и реплейс реплейса от реплейса реплейса не будет в ней выглядеть чем-то жутким ))))
...
Рейтинг: 0 / 0
Обновление данных с помощью replace
    #39663803
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
execaВсем доброго времени суток! Прошу вашей помощи в содействии решения такой проблемы.

Есть некая таблица, table1. В ней есть колонка, с данными записанными через запятую (data).
Есть еще одна таблица table2 (old_value, new_value), со списком соответствий замен.
Необходимо пробежать по table1.data и заменить в ней все вхождения old_value на new_value. Replace ожидает одно значение в искомый и заменяемый текст. А хотелось бы пробежать именно по списку из нескольких значений. Заранее спасибо за любую помощь.Специально для этого придумали популярную конструкцию
Код: plaintext
excel spreadsheet ... main workbook
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
with t(ord, str) as
(select 1, 'qwerty, asd' from dual union all select 2, 'hello, world' from dual)
, r(old_value, new_value) as
(select 'asd', 'xyz' from dual union all select 'hello', 'bye' from dual union all select 'world', 'war' from dual)
select str, result
from t
excel spreadsheet
  reference r on (select * from r) dimension by (old_value) measures (new_value)
main workbook
  partition by (ord) dimension by (0 dummy) measures (str, str result, str tmp)
  rules iterate (1e9) until (tmp[0] is null)
  (
    tmp[0] = regexp_substr(str[0], '\w+', 1, iteration_number + 1),
    result[0] = nvl2(r.new_value[tmp[0]], replace(result[0], tmp[0], r.new_value[tmp[0]]), result[0])
  )
/

STR          RESULT
------------ ------------
qwerty, asd  qwerty, xyz
hello, world bye, war
...
Рейтинг: 0 / 0
Обновление данных с помощью replace
    #39664393
execa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, в данном случае сделал так, добавил в справочник id
и прокрутил через цикл по количеству строк replace
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Обновление данных с помощью replace
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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