powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / update xml ?
10 сообщений из 10, страница 1 из 1
update xml ?
    #39649407
nxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть 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
update xml ?
    #39649422
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nxxпоменять все значенияпостановка неполная.
...
Рейтинг: 0 / 0
update xml ?
    #39649426
nxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-nxxпоменять все значенияпостановка неполная.

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

UPDATEXML

еще бы понять как его готовить
...
Рейтинг: 0 / 0
update xml ?
    #39649506
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nxxеще бы понять как его готовить
если не понятно,тогда есть replace
...
Рейтинг: 0 / 0
update xml ?
    #39649677
nxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вариант 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
update xml ?
    #39649684
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nxx,

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

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

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


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