包含clob字段的数据入库sql怎么写
針對oracle數(shù)據(jù)庫,在我們后臺需要入庫clob字段類型時,sql應(yīng)該怎么寫呢?
最近遇到這個問題,于是了解了下并作記錄(以表test為例,含有id-number,name-vachar2,content-clob三個類型字段):
1、當(dāng)確認clob字段的數(shù)據(jù)長度不超過oracle中字符串最大長度限制,則可以直接使用單引號和字符串一樣入庫,即
insert into test (id,name,content)values(1,'name1','xxxxx');
2、一般情況下,clob用于存儲大段文字或其他字符數(shù)據(jù),其長度是超過oracle字符串最大長度限制的,此時不能再簡單用單引號入庫,應(yīng)該使用oracle內(nèi)置方法to_clob()。先將需要存入的數(shù)據(jù)轉(zhuǎn)化一下結(jié)構(gòu):
public class GetClobStr {
? ? ??/**
?? ? * @Author Administrator
?? ? * @Description 將字符串根據(jù)特定長度分割成字符串?dāng)?shù)組并拼接成正確格式
?? ? * 格式 ?to_clob('xx')||to_clob('xx')||...
?? ? * @Param @param s?
?? ? * @Param @param len 每個clob串的字符長度
?? ? * @Param @return(參數(shù))
?? ? * @Return String
?? ? */
?? ?public static String stringSpilt(String s,int len){
?? ??? ?StringBuffer sb=new StringBuffer();
?? ??? ?int spiltNum=(s.length())/len;
?? ??? ?if(spiltNum==0){
?? ??? ??? ?sb.append("to_clob('"+s+"')");
?? ??? ?}else {
?? ??? ??? ?for(int i=0;i<s.length();i+=len){
?? ??? ??? ??? ?if((i+len)>=s.length()){
?? ??? ??? ??? ??? ?sb.append("to_clob('"+s.substring(i, s.length())+"')");
?? ??? ??? ??? ?}else{
?? ??? ??? ??? ??? ?sb.append("to_clob('"+s.substring(i, i+len)+"')||");
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return sb.toString();
?? ?}
}
此時sql可以這樣寫:
StringBuffer sb=new StringBuffer().append("insert into test(id,name,content) values (2,'name2',")
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ? ?.append(GetClobStr.stringSpilt(源字符串,len))
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ? ?.append(");");
(len根據(jù)自己需求分配每個to_clob()串的字符長度)
? ? ? ?
總結(jié)
以上是生活随笔為你收集整理的包含clob字段的数据入库sql怎么写的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于SSM+JSP+MYSQL+H-UI
- 下一篇: 乔春洋:一个具有划时代意义的概念:品牌定