日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

varchar2改为clob带来的问题

發布時間:2025/4/5 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 varchar2改为clob带来的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

jdbc的PreparedStatement.setString(),ResultSet.getString()對clob和string的處理一樣,盡管類型變化了但程序修改相對較少(前端長度驗證)。

作為基礎數據,需要將開發庫表數據導出通過sql方式在正式環境進行升級,clob字段無法正常導出sql,如果clob字段小于4000可通過to_char轉換導出,字段大于4000時insert語句執行將有異常“ORA-01704: string literal too long”。再如果只是存在極個別大于4000,還可以有一個方法,通過先insert前4000,再逐個update(set remark = remark + 'xxx'),如果量比較大處理起來就比較費力,考慮以下處理方法:

1、在庫中增加varchar2(4000)列,作為基礎數據長度還是可控的;

2、bean增加set和get方法,set方法進行超長拆分,get方法進行超長拼接;

/**備注*/ private?String?remark; /**擴展備注*/ private?String?remark1;/**拼接備注,無實際數據庫字段,無實際bean屬性*/ public?String?getRealRemark()?{return?null?==?remark???null?:?remark?+?(null?==?remark1???""?:?remark1); }/**拆分備注*/ public?void?setRealRemark(String?realRemark)?throws?UnsupportedEncodingException {if?(null?==?realRemark?||?realRemark.getBytes("GBK").length?<=?4000)?{/*未超4千字節,remark1列無用*/this.remark??=?realRemark;this.remark1?=?null;}?else?if(realRemark.getBytes("GBK").length?<=?7997){/*超過4千字節,remark列存不超4千字節的最多字符*/int?len?=?2000;while?(true)?{if?(realRemark.substring(0,?++len).getBytes("GBK").length?>?4000)?{//TODO:優化break;}}this.remark??=?realRemark.substring(0,?len?-?1);this.remark1?=?realRemark.substring(len?-?1);}else{} }public?String?getRemark()?{return?remark; } public?void?setRemark(String?remark)?{this.remark?=?remark; } public?String?getRemark1()?{return?remark1; } public?void?setRemark1(String?remark1)?{this.remark1?=?remark1; }


轉載于:https://my.oschina.net/h2do/blog/309498

總結

以上是生活随笔為你收集整理的varchar2改为clob带来的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。