Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / update xml ? / 10 сообщений из 10, страница 1 из 1
24.05.2018, 13:37
    #39649407
nxx
nxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update xml ?
есть xml вида

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<x1>
<x2>
<x3>
<v>111</v>
<v>222</v>
<v>333</v>
</x3>
</x2>
</x1>



нужно найти определенное значение v
например, "111", и заменить его на "aaa"

это задача минимум

задача максимум - поменять все значения в соответствии с некоторым маппиингом типа

Код: plsql
1.
2.
3.
select 111, 'aaa' from dual union all
select 222, 'bbb' from dual union all
select 333, 'ccc' from dual



можно это как-то одним запросом ?
...
Рейтинг: 0 / 0
24.05.2018, 13:49
    #39649422
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update xml ?
nxxпоменять все значенияпостановка неполная.
...
Рейтинг: 0 / 0
24.05.2018, 14:00
    #39649426
nxx
nxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update xml ?
-2-nxxпоменять все значенияпостановка неполная.

чем ?
...
Рейтинг: 0 / 0
24.05.2018, 14:15
    #39649439
efendi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update xml ?
...
Рейтинг: 0 / 0
24.05.2018, 15:07
    #39649476
nxx
nxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update xml ?
efendinxx,

UPDATEXML

еще бы понять как его готовить
...
Рейтинг: 0 / 0
24.05.2018, 16:07
    #39649506
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update xml ?
nxxеще бы понять как его готовить
если не понятно,тогда есть replace
...
Рейтинг: 0 / 0
25.05.2018, 08:40
    #39649677
nxx
nxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update xml ?
вариант 1 вроде сделал
как бы еще прокинуть туда полноценный маппинг

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
with a as
(select
xmltype('<x1>
<x2>
<x3>
<v>111</v>
<v>222</v>
<v>333</v>
</x3>
</x2>
</x1>') as xx
from dual
) 
select xx 
, 
XMLQuery(
'
copy $xx2 := $xx
        modify(
          (for $i in $xx2/x1/x2/x3/v 
           return replace value of node $i with  (if (data($i) = $xfrom) then $xto else data($i))
            )         
        )
        return $xx2
' 
PASSING a.xx AS "xx", '333' AS "xfrom", 'ccc' AS "xto" 
RETURNING CONTENT)
from a



очень жаль что никто не помог
убил на это просто кучу времени
...
Рейтинг: 0 / 0
25.05.2018, 09:12
    #39649684
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update xml ?
nxx,

updatexml(a.xx,'//node()[text()="111"]/text()','aaa')
...
Рейтинг: 0 / 0
25.05.2018, 09:26
    #39649687
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update xml ?
123йй,

Код: plsql
1.
2.
updatexml(updatexml(updatexml(a.xx,'x1/x2/x3/v[text()="111"]/text()','aaa'),
'x1/x2/x3/v[text()="222"]/text()','bbb'),'x1/x2/x3/v[text()="333"]/text()','ccc')


авторзадача максимум - поменять все значения в соответствии с некоторым маппиингом типа
циклом
...
Рейтинг: 0 / 0
25.05.2018, 09:43
    #39649694
nxx
nxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update xml ?
123ййnxx,

updatexml(a.xx,'//node()[text()="111"]/text()','aaa')

хорошо, спасибо, попробуем так
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / update xml ? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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