Tôi có một bảng có một cột clob có dữ liệu XML trong đó. Giả sử tôi muốn thay thế XYZ bằng ABC trong cột clob. Có thể sử dụng sqlplus không?Có thể cập nhật dữ liệu bên trong CLOB bằng SQL không?
Trả lời
"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.
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>
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ó
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. –
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
Có, có thể với một hàm REPLACE(). Hãy thử:
update nnn set c1 = REPLACE(c1,'ABC>','XYZ>')
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