У меня есть таблица, имеющая один clob столбец, который имеет данные XML в ней. Скажите, что я хочу заменить XYZ ABC в clob столбце. Это - возможное использование sqlplus?
"У меня новая строка в столбце. Любой advice? "
Новые строки - это символы; если вы хотите изменить текст, который их содержит, вам нужно включить их в строку поиска. Вы можете сделать это с помощью функции CHR (), которая принимает значение ASCII в качестве аргумента. Точные коды вам необходимо включить различные параметры в зависимости от ОС. Поскольку я запускал этот пример в MS Windows, мне нужно было передать как перевод строки (ASCII = 10), так и возврат каретки (ASCII = 13).
SQL> select * from t42
2 /
TXT
--------------------------------------------------------------------------------
<ABC> ABCD
</ABC>
SQL> update t42 set txt=replace(txt,'ABCD'||chr(10)||chr(13), 'APC woz here')
2 /
1 row updated.
SQL> select * from t42
2 /
TXT
--------------------------------------------------------------------------------
<ABC> APC woz here </ABC>
SQL>
Между прочим, если вы храните текст XML, это может целесообразно использовать тип данных XMLType для столбца вместо CLOB. Он обладает множеством полезных функций.
Почему бы не попробовать?
SQL> create table nnn(c1 clob);
Table created.
SQL> insert into nnn values ('text ABC end');
1 row created.
SQL> select * from nnn;
C1
-------------------------------------------------
text ABC end
SQL> update nnn set c1=replace(c1,'ABC','XYZ');
1 row updated.
SQL> select * from nnn;
C1
-------------------------------------------------
text XYZ end
SQL>