2010-06-29 11 views

risposta

5

"Sono nuova linea nella colonna. Qualunque consiglio?"

Newlines sono caratteri; se vuoi modificare il testo che li contiene devi includerli nella stringa di ricerca. Puoi farlo usando CHR() che prende come argomento un valore ASCII. I codici precisi che devi includere variano in base al sistema operativo. Poiché ho eseguito questo esempio su MS Windows, avevo bisogno di passare sia l'avanzamento riga (ASCII = 10) che il ritorno a capo (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> 

Per inciso, se si archiviano testo XML potrebbe essere utile utilizzare il tipo di dati XMLType per la colonna invece di CLOB. Viene fornito con molte utili funzionalità.

+0

Grazie a quello. :). grazie per indicare il tipo di dati XML non l'ho usato prima ma ho provato. – Hemant

6

Perché non provarlo?

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> 
+0

grazie :). quello ha funzionato. un altro dubbio. se devo sostituire sostituire più linee? dire che ho ABCD nella tabella e voglio sostituirlo con XYZ. Ho provato l'aggiornamento nnn set c1 = replace (c1, ' ABCD ', 'XYZ'); ma non ha aggiornato nulla. ho una nuova riga nella colonna. qualche consiglio? – Hemant

+0

Non sono sicuro di capire, sta funzionando bene. Per favore, mostraci il tuo tentativo. –

+0

nel mio xml ho linee multiple e voglio sostituirle con qualche nuovo valore. È possibile? – Hemant

0

Sì, è possibile con una funzione REPLACE(). Prova:

update nnn set c1 = REPLACE(c1,'ABC>','XYZ>') 
Problemi correlati