Функция replace
заменяет одну текстовую строку другой, поэтому вы можете изменить
definition
на
replace(definition, '<reportId>RP00000390</reportId>', '<reportId>RP00002004</reportId>')
Вы также можете получить всестолбцы, которые вам нужны от test_template_report
за один раз:
insert into test_report
( company_id
, report_id
, brch_code
, definition
, description
, editable_flag
, executable_flag
, name
, report_type )
select 2420
, 'RP00002004'
, '0001'
, replace(tr.definition, '<reportId>RP00000390</reportId>', '<reportId>RP00002004</reportId>')
, tr.description
, tr.editable_flag
, tr.executable_flag
, tr.name
, '01'
from test_template_report tr
where tr.template_id = 'RP00001242';
Если вы хотите заменить любое значение reportIf
, а не только 'RP00000390'
, вы можете использовать regexp_replace
:
insert into test_report
( company_id
, report_id
, brch_code
, definition
, description
, editable_flag
, executable_flag
, name
, report_type )
select 2420
, 'RP00002004'
, '0001'
, regexp_replace(definition,'<reportId>[^<]+</reportId>','<reportId>RP00002004</reportId>')
, tr.description
, tr.editable_flag
, tr.executable_flag
, tr.name
, '01'
from test_template_report tr
where tr.template_id = 'RP00001242';