2010-06-29 23 views

Trả lời

5

"tôi có dòng sản phẩm mới trong cột. Lời khuyên nào ?"

Dòng mới là ký tự; nếu bạn muốn sửa đổi văn bản có chứa chúng, bạn cần phải bao gồm chúng trong chuỗi tìm kiếm. Bạn có thể làm điều này bằng cách sử dụng hàm CHR() nhận giá trị ASCII làm đối số. Các mã chính xác bạn cần bao gồm khác nhau tùy theo hệ điều hành. Bởi vì tôi chạy ví dụ này trên MS Windows, tôi cần phải vượt qua cả linefeed (ASCII = 10) và trở về vận chuyển (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> 

Ngẫu nhiên, nếu bạn đang lưu trữ văn bản XML nó có thể là giá trị sử dụng datatype XMLType cho cột thay vì CLOB. Nó đi kèm với rất nhiều chức năng hữu ích.

+0

Cảm ơn công việc đó :). cảm ơn cho chỉ datatype XML Tôi havent được sử dụng nó trước nhưng xác định thử. – Hemant

6

Tại sao bạn không dùng thử?

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

cảm ơn :). đã hoạt động. một nghi ngờ nữa. nếu tôi phải thay thế nhiều dòng? nói rằng tôi có ABCD trong bảng và tôi muốn thay thế bằng XYZ. Tôi đã thử bản cập nhật nnn đặt c1 = thay thế (c1, ' ABCD ', 'XYZ'); nhưng không cập nhật bất kỳ điều gì. tôi có dòng mới trong cột. bất kỳ lời khuyên nào? – Hemant

+0

Tôi không chắc chắn để hiểu, nó đang làm việc tốt. Xin vui lòng, cho chúng tôi thấy thử của bạn. –

+0

trong xml của tôi tôi có dòng mulitple và tôi muốn thay thế chúng bằng một số giá trị mới. là nó có thể? – Hemant

0

Có, có thể với một hàm REPLACE(). Hãy thử:

update nnn set c1 = REPLACE(c1,'ABC>','XYZ>') 
Các vấn đề liên quan