私が試した更新クエリ:
Update table_name
set data='.....' || Dbms_lob.substr(data,1,20)
where key ='...'
更新できますが、位置 20 以降のデータもすべてクリアされています。
SQL を変更するにはどうすればよいですか?
dbms_lob.substr の構文を確認してください。これは標準の substr の逆なので、データから最初の 20 文字が必要な場合は、dbms_lob.substr(data,20,1) になります。または、より良い、
dbms_lob.substr(lob_loc=>data,amount=>20,offset=>1);
varchar2 が返されるため、金額 <= 32767 であることに注意してください。
update [tableName] set field=dbms_lob.substr(field, 3,1)+'abc' where field=value
それは動作しません...