日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

varchar2改为clob带来的问题

發布時間:2025/4/5 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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带来的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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