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

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

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

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

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

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

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


Выдели подстроку ",old_value," и замени её на ",new_value,"
...
Рейтинг: 0 / 0
21.06.2018, 16:14
    #39663696
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление данных с помощью replace
execa..В ней есть колонка, с данными записанными через запятую ..
если будете достаточно упорны, то сделаете базу данных
...
Рейтинг: 0 / 0
21.06.2018, 18:53
    #39663786
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление данных с помощью replace
orawishexeca..В ней есть колонка, с данными записанными через запятую ..
если будете достаточно упорны, то сделаете базу данных
и реплейс реплейса от реплейса реплейса не будет в ней выглядеть чем-то жутким ))))
...
Рейтинг: 0 / 0
21.06.2018, 20:06
    #39663803
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление данных с помощью replace
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
22.06.2018, 18:04
    #39664393
execa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление данных с помощью replace
Всем спасибо, в данном случае сделал так, добавил в справочник id
и прокрутил через цикл по количеству строк replace
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Обновление данных с помощью replace / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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